<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>JTeam Blog &#187; Solr</title>
	<atom:link href="http://blog.jteam.nl/tag/solr/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.jteam.nl</link>
	<description>Keep updated on what we&#039;re doing!</description>
	<lastBuildDate>Fri, 23 Jul 2010 07:32:56 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>JTeam Partners with New Relic to Provide Application Performance Management for Solr Enterprise Search Server</title>
		<link>http://blog.jteam.nl/2010/05/11/jteam-partners-with-new-relic-to-provide-application-performance-management-for-solr-enterprise-search-server/</link>
		<comments>http://blog.jteam.nl/2010/05/11/jteam-partners-with-new-relic-to-provide-application-performance-management-for-solr-enterprise-search-server/#comments</comments>
		<pubDate>Tue, 11 May 2010 15:18:59 +0000</pubDate>
		<dc:creator>Jenny Nguyen</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[APM]]></category>
		<category><![CDATA[Lucene]]></category>
		<category><![CDATA[New Relic]]></category>
		<category><![CDATA[New Relic RPM]]></category>
		<category><![CDATA[Solr]]></category>

		<guid isPermaLink="false">http://blog.jteam.nl/2010/05/11/jteam-partners-with-new-relic-to-provide-application-performance-management-for-solr-enterprise-search-server/</guid>
		<description><![CDATA[JTeam will now offer leading on-demand APM tool to monitor, troubleshoot and optimize deployments of Solr search server JTeam today announced that it has partnered with New Relic, Inc., to make New Relic RPM available to its clients during consulting engagements. JTeam consultants and clients can now use RPM collaboratively to monitor, troubleshoot, and optimize [...]]]></description>
			<content:encoded><![CDATA[<p>JTeam will now offer leading on-demand APM tool to monitor, troubleshoot and optimize deployments of Solr search server</p>
<p>JTeam today announced that it has partnered with New Relic, Inc., to make New Relic RPM available to its clients during consulting engagements. JTeam consultants and clients can now use RPM collaboratively to monitor, troubleshoot, and optimize live production web applications and Solr instances, and thus ensure successful application deployments and a superior Web user experience.</p>
<p>New Relic, Inc. is the leading software-as-a-service provider of application performance management (APM) solutions. Its flagship product, New Relic RPM, is an on-demand performance management solution for web applications developed in Java, Ruby, or JRuby and provides deep, 24&#215;7 visibility and code-level diagnostics for web applications deployed on traditional, dedicated infrastructures or in the cloud. New Relic recently announced RPM’s ability to provide deep visibility into production Solr instances.  To learn more about New Relic RPM and Solr monitoring go to <a href="http://www.newrelic.com/solr.html" target="_blank">http://www.newrelic.com/solr.html</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.jteam.nl/2010/05/11/jteam-partners-with-new-relic-to-provide-application-performance-management-for-solr-enterprise-search-server/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Introduction to Lucene Connectors Framework &#8211; Part 1</title>
		<link>http://blog.jteam.nl/2010/04/16/introduction-to-lucene-connectors-framework-part-1/</link>
		<comments>http://blog.jteam.nl/2010/04/16/introduction-to-lucene-connectors-framework-part-1/#comments</comments>
		<pubDate>Fri, 16 Apr 2010 10:43:56 +0000</pubDate>
		<dc:creator>Ralph Benjamin Ruijs</dc:creator>
				<category><![CDATA[Enterprise Search]]></category>
		<category><![CDATA[CMS]]></category>
		<category><![CDATA[LCF]]></category>
		<category><![CDATA[Lucene]]></category>
		<category><![CDATA[Lucene Connectors Framework]]></category>
		<category><![CDATA[Solr]]></category>

		<guid isPermaLink="false">http://blog.jteam.nl/?p=2151</guid>
		<description><![CDATA[In my previous blog, Searching your Java CMS using Apache Solr: Introduction, I looked at how to synchronize the information in a Java CMS with a Solr index. This blog is an introduction to the Lucene Connectors Framework, a crawler framework I will use to solve the problem of making the information from a Java [...]]]></description>
			<content:encoded><![CDATA[<p>In my previous blog, <a href="http://blog.jteam.nl/2010/03/31/searching-your-java-cms-using-apache-solr-introduction">Searching your Java CMS using Apache Solr: Introduction</a>, I looked at how to synchronize the information in a Java CMS with a Solr index. This blog is an introduction to the Lucene Connectors Framework, a crawler framework I will use to solve the problem of making the information from a Java CMS search-able using Solr. I will show you how to build, deploy and get it running as a web crawler. In part 2 of this introduction I will extend LCF with a new Connector.</p>
<p>The Lucene Connectors Framework, an incubator project at Apache, provides a framework for connecting a source content repository to target repositories or indexes, such as Apache Solr. Last month the Lucene Connector Framework published their first build-able sources.<br />
<span id="more-2151"></span></p>
<h2>Basic Introduction to LCF</h2>
<p>The Lucene Connector Framework has been developed and successfully deployed for the last five years by MetaCarta. Giving us a proven and usable system, but with a rather steep learning curve. There is a lot of documentation already available on the project&#8217;s wiki and for this blog post we will take a look at how to build and deploy LCF.</p>
<p><a href="http://blog.jteam.nl/wp-content/uploads/2010/04/LCF_Processes.png"><img class="alignnone size-full wp-image-2153" title="LCF Components" src="http://blog.jteam.nl/wp-content/uploads/2010/04/LCF_Processes.png" alt="LCF Components" width="541" height="473" /></a></p>
<p>The Lucene Connectors Framework consists of three main components:</p>
<ul>
<li>Configuration UI (Web Application)</li>
<li>Authority Service (Web Application)</li>
<li>Agent (Java Process)</li>
</ul>
<p>Within LCF, the Agent process does the actual work, it crawls documents and ingests them. The Authority Service webapp is used to get authorization tokens for a given username. To configure and interact with the system, the Configuration UI is used. The Configuration UI (crawler-ui) is a webapp in which you can configure the system, start/pause/abort the crawler and get statistics about the documents.<br />
The agent, authority service and configuration ui, are build on top of the PostgreSql database. The database is used to store state, eg. crawled documents, and configuration, eg. scheduling and connection information. The synchronization folder is used to keep the processes in sync, by providing a locking mechanism across jvm instances.</p>
<h2>Build</h2>
<p>There are currently no releases of LCF available, but the project sources are in svn. Get the project sources using subversion from:<br />
<a href="https://svn.apache.org/repos/asf/incubator/lcf/trunk">https://svn.apache.org/repos/asf/incubator/lcf/trunk</a></p>
<p>After a checkout, you will find the following directories:</p>
<ul>
<li><strong>documentation</strong>
<ul>
<li>Part of the end-user documentation, written in LaTeX.</li>
</ul>
</li>
<li><strong>modules</strong>
<ul>
<li>This directory contains the sources for the framework and the different supported connectors.</li>
</ul>
</li>
<li><strong>tests</strong>
<ul>
<li>Part of the test files used by MetaCarta</li>
</ul>
</li>
</ul>
<p>Building LCF is done using ant and requires ant 1.7 or greater. Run ant from the modules directory to build the system. The output is produced in the modules/dist folder. The build creates two war files in the tomcat folder and a set of jar files in the processes folder.</p>
<h2>Setup</h2>
<p>The LCF is implemented on top of a postgreSQL database and uses a folder on the file system for synchronization. Both need to be configured in the LCF configuration file. By default LCF looks for a configuration file at /lcf/properties.ini. The following code block shows the minimal configuration needed.</p>
<blockquote><p>org.apache.lcf.synchdirectory=/home/user/lcf_work/<br />
org.apache.lcf.database.username=postgres<br />
org.apache.lcf.database.password=postgres<br />
org.apache.lcf.database.name=lcf</p></blockquote>
<p>When not specified in the configuration file, LCF expects a standard commons-logging property file at /lcf/logging.ini.</p>
<blockquote><p>org.apache.commons.logging.Log=org.apache.commons.logging.impl.Log4JLogger</p>
<p># Configuration file of the log<br />
log4j.configuration=log4j.xml<br />
log4j.rootCategory=info<br />
# Set root logger level to DEBUG and its only appender to A1.<br />
log4j.rootLogger=DEBUG, A1</p>
<p># A1 is set to be a ConsoleAppender.<br />
log4j.appender.A1=org.apache.log4j.FileAppender<br />
log4j.appender.A1.Threshold=DEBUG<br />
log4j.appender.A1.File=ApplicationLog.log<br />
log4j.appender.A1.Append=true</p>
<p># A1 uses PatternLayout.<br />
log4j.appender.A1.layout=org.apache.log4j.PatternLayout<br />
log4j.appender.A1.layout.ConversionPattern=%-4r [%t] %-5p %c %x &#8211; %m%n</p></blockquote>
<p>Create the database and register the different components using the following commands from the modules/dist directory.</p>
<blockquote><p>java -Djava.ext.dirs=processes org.apache.lcf.core.DBCreate postgres postgres<br />
java -Djava.ext.dirs=processes org.apache.lcf.agents.Install<br />
java -Djava.ext.dirs=processes org.apache.lcf.agents.Register org.apache.lcf.crawler.system.CrawlerAgent<br />
java -Djava.ext.dirs=processes org.apache.lcf.agents.RegisterOutput org.apache.lcf.agents.output.solr.SolrConnector &#8220;Solr Connector&#8221;<br />
java -Djava.ext.dirs=processes org.apache.lcf.crawler.Register org.apache.lcf.crawler.connectors.webcrawler.WebcrawlerConnector &#8220;Web Crawler&#8221;</p></blockquote>
<h2>Run</h2>
<p>With the configuration in place you need to deploy the lcf-crawler-ui web application and start the Agent. The web application can be deployed in any servlet container like Tomcat or Jetty, but needs to be run as the same user as the Agent. You can find the war file needed in the modules/dist/web directory.</p>
<p>The Agent is started by using the following command from the modules/dist directory.</p>
<blockquote><p>java -Djava.ext.dirs=dist/processes org.apache.lcf.agents.AgentRun&amp;</p></blockquote>
<p>Stopping the agent is done using the AgentStop class. Don&#8217;t stop the Agent in another way, because that may result in dangling locks in the synchronization directory.</p>
<p>The lcf-crawler-ui should now be working at http://hostname/lcf-crawler-ui</p>
<h2>Configure</h2>
<p>Using the lcf-crawler-ui webapplication you can configure the web-crawler. The web-crawler needs an output connection, a repository connection and a job. The authority connection will not be used by the webcrawler.<br />
<img src="http://blog.jteam.nl/wp-content/uploads/2010/04/LCF_ConnectionsJobs.png" alt="" title="LCF Configuration" width="567" height="315" class="alignnone size-full wp-image-2209" /></p>
<table border="1" cellspacing="0" cellpadding="2">
<tbody>
<tr>
<td>Output Connection</td>
<td>is an output connector with its configuration parameters. LCF supports different output connectors, such as the Solr connector.</td>
</tr>
<tr>
<td>Authority Connection</td>
<td>is an authority connector with its configuration parameters. Its only function is to convert a user name (which is often a Kerberos principal name) into a set of access tokens.</td>
</tr>
<tr>
<td>Repository Connection</td>
<td>is an repository connector with its configuration parameters. Currently LCF supports <a href="http://cwiki.apache.org/confluence/display/CONNECTORS/SupportedConnectors">11 connectors</a>.</td>
</tr>
<tr>
<td>Job</td>
<td>ties the different connections together and holds additional, job specific, configuration. Jobs are scheduled and run by the Agent.</td>
</tr>
</tbody>
</table>
<p>Create an output connection of the type &#8220;Solr Connector&#8221; and specify the details of your solr installation. The update handler defaults to /update/extract, as the Solr connector uses the extraction handler to send the data. Make sure the Solr extraction handler is correctly configured in your solr installation.<br />
<img class="alignnone size-full wp-image-2156" title="Screenshot-Lucene Connector Framework: Edit Output Connection" src="http://blog.jteam.nl/wp-content/uploads/2010/04/Screenshot-Lucene-Connector-Framework-Edit-Output-Connection-Google-Chrome.png" alt="Screenshot-Lucene Connector Framework: Edit Output Connection" width="606" height="342" /></p>
<p>Create a repository connection of the type &#8220;Web Crawler&#8221; and at least specify an Email address. This email address is send in the head of every request and can be used by system administrators to contact you about the<br />
crawling.<br />
<img class="alignnone size-full wp-image-2202" title="Screenshot-LCF_WebCrawler_Email" src="http://blog.jteam.nl/wp-content/uploads/2010/04/Screenshot-LCF_WebCrawler_Email.png" alt="Screenshot-LCF_WebCrawler_Email" width="799" height="106" /></p>
<p>Create a Job for the crawling the web by selecting the two created connections. The web-crawler uses the Seeds you specify as its starting point, so you need to specify at least one url.<br />
<img class="alignnone size-full wp-image-2157" title="Screenshot-Lucene Connector Framework: Edit Job" src="http://blog.jteam.nl/wp-content/uploads/2010/04/Screenshot-Lucene-Connector-Framework-Edit-Job-Google-Chrome.png" alt="Screenshot-Lucene Connector Framework: Edit Job" width="890" height="130" /></p>
<h2>Crawl</h2>
<p>You can then look at the status of your job by clicking “Status and Job Management” on the sidebar. You can start any crawl you like immediately from this interface by clicking “Start” next to the name of the job. This interface also allows you to see how many documents have been crawled.<br />
<img class="alignnone size-full wp-image-2159" title="Screenshot-Lucene Connector Framework: Status of all jobs" src="http://blog.jteam.nl/wp-content/uploads/2010/04/Screenshot-Lucene-Connector-Framework-Status-of-all-jobs-Google-Chrome.png" alt="Screenshot-Lucene Connector Framework: Status of all jobs" width="899" height="152" /></p>
<h2>Conclusion</h2>
<p>The Lucene Connectors Framework provides a solid and generic infrastructure for connecting source repositories, to target repositories or indexes. Build on top of postgresql makes it robust and rigid against system crashes or restarts.</p>
<p>Of course there is still a lot of work to be done. The Lucene/LCF authorization model has yet to be worked out and more connectors are needed to support different source and output repositories. Maybe a new ui?</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.jteam.nl/2010/04/16/introduction-to-lucene-connectors-framework-part-1/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>State of Solr</title>
		<link>http://blog.jteam.nl/2010/04/14/state-of-solr/</link>
		<comments>http://blog.jteam.nl/2010/04/14/state-of-solr/#comments</comments>
		<pubDate>Wed, 14 Apr 2010 12:14:37 +0000</pubDate>
		<dc:creator>Chris Male</dc:creator>
				<category><![CDATA[Enterprise Search]]></category>
		<category><![CDATA[Lucene]]></category>
		<category><![CDATA[Solr]]></category>

		<guid isPermaLink="false">http://blog.jteam.nl/?p=2099</guid>
		<description><![CDATA[What happened to Solr 1.5? what is Solr 3.1? and what about Solr Cloud? In the last few months, there have been many changes to Solr that can leave users confused about which version to use, what features each version provides, and when (and if) they will be released. This blog entry will try to [...]]]></description>
			<content:encoded><![CDATA[<p>What happened to Solr 1.5? what is Solr 3.1? and what about Solr Cloud? In the last few months, there have been many changes to Solr that can leave users confused about which version to use, what features each version provides, and when (and if) they will be released.  This blog entry will try to clarify the <em>State of Solr.</em><br />
<span id="more-2099"></span></p>
<h2>Solr 1.5</h2>
<p>With Solr 1.4 released in November &#8217;09, Solr 1.5 carried on where 1.4 left off.  Most development was related to bugs that had been found in 1.4, but a number of interesting new features were added:</p>
<ul>
<li><strong>Spatial Search Support</strong> &#8211; Following on from the development of Solr&#8217;s spatial search support in SOLR-773, Grant Ingersoll lead a drive to complete Solr&#8217;s spatial search support.  Providing integration with Spatial Lucene, and introducing its own spatial search functions, Solr&#8217;s spatial search allows users to filter their results to those within a certain distance of a point, and boost relevance of results by their distance</li>
<li><strong>Poly FieldTypes</strong> &#8211; From the Spatial Solr development, Poly FieldTypes allow one field in the Solr schema to be actually indexed as multiple fields.  Although currently only used for spatial search, this functionality promises to bring complex FieldTypes to Solr.</li>
<li><strong>Sorting by FunctionQueries</strong> &#8211; Also from the Spatial Sol development, the ability to sort by FunctionQueries allows users Solr&#8217;s many FunctionQueries in their sort criteria, as though they were normal fields.  This allows users to sort Events by how close their start date is to NOW for example.</li>
<li><strong>Multi-threaded DataImportHandler</strong> &#8211; With the DataImportHandler&#8217;s (DIH) widespread acceptance, it was only a matter of time before it was pushed to its limits.  One improvement to the DIH made in Solr 1.5, was the ability to use multiple threads to request and index Documents in parallel, thus drastically improving the performance of those users indexing vast datasources.</li>
</ul>
<p>Perhaps Solr 1.5&#8242;s biggest limitation was that it was based on Lucene 2.9.x, and consequently was unable to benefit from the many new features being introduced in Lucene 3.x.  As part of a wider decision to merge the development of Solr and Lucene, Solr 1.5 was shelved (tagged in SVN) in favour of a new version of Solr that would be built against Lucene&#8217;s trunk (more about that later).</p>
<p>At this stage it is hard to tell if Solr 1.5 will be released or not.  Certainly if you need one of the features mentioned above, or are facing one of the many bugs fixed in Solr 1.5, it would be worth checking it out from SVN and upgrading, otherwise I recommend staying with Solr 1.4, and waiting for the newer version of Solr:</p>
<h2>Solr 3.1</h2>
<p>Before carrying on, I should say that it has not been decided that the next version of Solr will be given the version number 3.1.  The name comes from the fact that it is built against the current development version of Lucene which will be released as 3.1.</p>
<p>Solr 3.1, as just mentioned, is a considerably updated version of Solr that is built against Lucene&#8217;s development trunk and is updated as Lucene is developed further.  For users wanting bug-free software, this means that Solr has access to Lucene&#8217;s considerable test-suite, and any changes made to Lucene will be tested against Solr.  For users wanting bleeding edge features, this means that Solr will be updated shortly after a feature is added to Lucene.</p>
<p>At the time of writing, this version of Solr is still under heavy development and should be treated as an alpha version at best.  The task of updating Solr to match Lucene meant a considerable number of changes had to be made, and many developments such as adding per-segment facetation still need to occur.</p>
<p>With some of Lucene&#8217;s latest features (namely flexible indexing) needing to &#8216;bake&#8217; in the open for awhile before being released, I imagine it will be some time before Solr 3.1 (or whatever it will be called), will be released.</p>
<h2>Solr Cloud</h2>
<p>Somewhat parallel to these developments has been the effort to add &#8216;cloud&#8217; support to Solr using Apache Zookeeper.  Solr Cloud, currently residing as a branch, provides support for automatic node detection and index/configuration sharing.  The intention is to allow users to be able to deploy Solr in their cloud, and be able easily add and remove nodes.</p>
<p>At time of writing, steps are being taken to bring the Solr Cloud branch back into trunk.  However, it was noted by one of the developers, that it does not include all the features that they wish to add.</p>
<h2>What version to use?</h2>
<p>With all the changes currently occurring with Solr, I would go so far as to say that users should continue to use Solr 1.4.  However, if you need access to one of the many new features introduced in Solr 1.5+ or Lucene 3.x, then given Solr 3.1 a shot, and report back your experiences.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.jteam.nl/2010/04/14/state-of-solr/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Enterprise Search using Solr and Lucene</title>
		<link>http://blog.jteam.nl/2010/04/01/enterprise-search-using-solr-and-lucene/</link>
		<comments>http://blog.jteam.nl/2010/04/01/enterprise-search-using-solr-and-lucene/#comments</comments>
		<pubDate>Thu, 01 Apr 2010 12:26:26 +0000</pubDate>
		<dc:creator>Bram Smeets</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Enterprise Search]]></category>
		<category><![CDATA[ISYS]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Lucene]]></category>
		<category><![CDATA[Lucene Connector Framework]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Solr]]></category>
		<category><![CDATA[Tika]]></category>

		<guid isPermaLink="false">http://blog.jteam.nl/?p=1583</guid>
		<description><![CDATA[The Enterprise Search market has long been dominated by commercial vendors and their products (e.g. Autonomy and Fast). We at JTeam feel that this era is finally over. At least for certain customers and requirements, there is finally a good Open Source alternative: Apache Solr, which is the Enterprise Search server based on Apache Lucene. [...]]]></description>
			<content:encoded><![CDATA[<p>The Enterprise Search market has long been dominated by commercial vendors and their products (e.g. Autonomy and Fast). We at JTeam feel that this era is finally over. At least for certain customers and requirements, there is finally a good Open Source alternative: <a href="http://lucene.apache.org/solr">Apache Solr</a>, which is the Enterprise Search server based on <a href="http://lucene.apache.org/java">Apache Lucene</a>. In this blog post we&#8217;ll give our view on enterprise search and explain how Lucene and Solr can help you realize your projects.</p>
<p><span id="more-1583"></span><br />
<h3>Enterprise Search</h3>
<p>Enterprise Search is the application of Information Retrieval (IR) technology to the information within an organization (as opposed to Web Search and Desktop Search). This can be all sorts of data (and usually a combination of multiple sorts), for example products in a database, documents on a file system and emails from a company mail server. This typically includes several distinct steps: gather content, index the retrieved content and make the content searchable.</p>
<h4>Gathering content</h4>
<p>The first thing to do is make sure the data that needs to be searchable is retrieved somehow from its respective location. This usually means using and/or building connectors that can access the content and retrieve it. There are currently several open source crawling tools out there, but <a href="http://incubator.apache.org/connectors/">Lucene Connector Framework (LCF)</a> is by far the most promising one. Luckily for us, LCF integrates with Solr out-of-the-box. You can use LCF to crawl a website or intranet site, but also other sources of information (e.g. a database, file system and Sharepoint and <a href="http://cwiki.apache.org/confluence/display/CONNECTORS/SupportedConnectors">many more</a>) and pass all the found documents (before or after extracting the useful content) to Solr. </p>
<h4>Extracting data</h4>
<p>Once we get to the data we want to make searchable, we usually have to transform it to a format that is understandable by the indexing / search engine. In order to achieve this there are several alternatives. Which one is more suitable for you depends on the specific requirements you have.</p>
<p>The first option is using Solr&#8217;s built in support for <a href="http://lucene.apache.org/tika">Apache Tika</a>, a toolkit for extracting metadata and structured text content from various document formats (e.g. Word and PDF documents). This allows you to send the raw document content to Solr and then have Tika extract the right content that is subsequently indexed.</p>
<p>If you need broader support for document formats, there are also several commercial file readers available with the most important being <a href="http://www.isys-search.com/technology/isysfilereaders/">ISYS file readers</a>.  </p>
<h4>Indexing / Searching</h4>
<p>The last part is making sure users can actually search the indexed data sources. The search algorithms and relevance rankings are handled by Solr (with Lucene under the hood) and can be configured and extended to the max. The main advantage of using an open source search solution is that it allows you to easily extend the default functionality with custom logic.<br />
The good thing about using Apache Solr is that it provides a whole lot of functionality out of the box, including facetted navigation, &#8220;Did you mean&#8230;&#8221; and &#8220;More like this&#8221; functionality. This allows you to easily impress your users with a minimum effort.</p>
<h3>Conclusion</h3>
<p>As mentioned in the introduction, we at JTeam feel that organisations that are considering using an Enterprise Search solution, should at least consider using Apache Solr and its related technology stack. The main advantage of these is that they are open source, which entails no license fees, but also built on a highly performant, proven technology: Apache Lucene.<br />
If you have are considering Solr, have any questions about using Solr for your project or need help convincing others about using Solr, <a href="http://www.jteam.nl/contact.html">contact us</a>!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.jteam.nl/2010/04/01/enterprise-search-using-solr-and-lucene/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Searching your Java CMS using Apache Solr: Introduction</title>
		<link>http://blog.jteam.nl/2010/03/31/searching-your-java-cms-using-apache-solr-introduction/</link>
		<comments>http://blog.jteam.nl/2010/03/31/searching-your-java-cms-using-apache-solr-introduction/#comments</comments>
		<pubDate>Wed, 31 Mar 2010 06:08:36 +0000</pubDate>
		<dc:creator>Ralph Benjamin Ruijs</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Enterprise Search]]></category>
		<category><![CDATA[CMS]]></category>
		<category><![CDATA[Java Content Repository]]></category>
		<category><![CDATA[JCR]]></category>
		<category><![CDATA[Lucene]]></category>
		<category><![CDATA[Solr]]></category>

		<guid isPermaLink="false">http://blog.jteam.nl/?p=1982</guid>
		<description><![CDATA[All Content Management Systems (CMS) provide the capability for users to search the content and browse the result. However, commonly this functionality turns out to be insufficient. This can be either because you want to allow users to search over multiple sources (the content repository, but also some external system) and combine the result. Or [...]]]></description>
			<content:encoded><![CDATA[<p>All Content Management Systems (CMS) provide the capability for users to search the content and browse the result. However, commonly this functionality turns out to be insufficient. This can be either because you want to allow users to search over multiple sources (the content repository, but also some external system) and combine the result. Or because you want to offer your users more advanced search functionality like &#8220;Did you mean&#8230;&#8221; functionality or facetted navigation. Therefore, you might want to consider using an advanced, open source search solution like Apache Solr. This blog post is the first in a serie that will introduce searching different CMS solutions using Apache Solr.</p>
<p><span id="more-1982"></span><span style="font-size: large;"><strong>Introduction</strong></span></p>
<p>To finish the last part for my Bachelor of ICT, I recently started my internship at JTeam. JTeam has been doing a lot of projects using either a CMS (e.g. Magnolia and Hippo) or requiring a search solution, typically using Apache Lucene and Apache Solr. My assignment is to investigate the problem of making the information from different CMS search-able using Solr and hopefully come up with a good solution.</p>
<p>In order for the content in a CMS to be available for searching, it needs to be indexed by Solr. Problem is that many of the Java-based CMS solutions do not provide an easy way to get their content to Solr. We need to get the information out of the CMS and feed it to Solr. In this blog post I will discuss the synchronization problem at a more generic level and look at some possible solutions.</p>
<p><span style="font-size: large;"><strong>Synchronization problem</strong></span></p>
<p>Before diving into CMS solutions specifically, let&#8217;s look at a more classic problem: the data replication problem. When we get information from a specific source and replicate it into another system, the data may get out of date when changes in the original source are not immediately propagated. This is a common problem, that has been studied extensively. Junghoo Cho and Hector Garcia-Molina studied this problem with the focus on Web Crawlers. They started their study by looking how to measure the problem and defined the freshness and age of a database.</p>
<blockquote><p>Intuitively, we consider a database ”fresher” when the database has more<br />
up-to-date elements. For instance, when database A has 10 up-to-date elements out of 20 elements, and when database B has 15 up-to-date elements, we consider B to be fresher than A. Also, we have a notion of ”age”: Even if all elements are obsolete, we consider database A ”more current” than B, if A was synchronized 1 day ago, and B was synchronized 1 year ago.</p></blockquote>
<p>With this notion of Freshness and Age we can look at the potential quality of the solutions to this problem.</p>
<p><span style="font-size: medium;"><strong>Possible ways</strong></span></p>
<p>Basically, there are three ways of replicating the content in a CMS to a search solution like Apache Solr:</p>
<ol>
<li>Look at the CMS&#8217;s data to see what has changed</li>
<li>Listen to the CMS and hear what has changed</li>
<li>Let the CMS update Solr</li>
</ol>
<p>The first option, looking at the CMS&#8217;s data to see what has changed, can be done by creating a crawler. The crawler will iterate over all the content in the CMS and compare the last known version with the current version of the content in the CMS. Such a crawler is typically implemented by repeating the following steps:</p>
<ul>
<li>Put all the known elements in a Queue</li>
<li>While the Queue is not Empty</li>
<ul>
<li>Take an element from the Queue</li>
<li>Check if the element has changed</li>
</ul>
</ul>
<p>This is fairly straightforward to implement. Luckily, the same study shows there is little to gain in trying to optimize the order in which we look at the elements, or the amount of resources we use for specific elements (e.g. the rate at which specific elements are checked). However, in order to keep your Solr data fresh and young, a crawler will need more and more resources when the CMS grows.</p>
<p>The second option, listening for changes in the CMS, would be better. In order to listen for changes the CMS should push the changes to external systems. A push, or observation, mechanism can be implemented in one of two ways: asynchronous or journaled. The simplest form, asynchronous observation, will send a notification on every change that occurs in the CMS. Getting notified of the change and being able to incorporate that change will give us a fresh and young Solr index. Although asynchronous observation looks perfect at first sight, it has two flaws: it doesn&#8217;t guarantee that all changes are actually sent and does not guarantee the right ordering of the changes. Missing a change, or getting two updates in the wrong order, leaves an element out-of-date, and the Solr index not fresh.</p>
<p>Journal based observation solves the problems of asynchronous observation, as it can guarantee complete information and ordering. Instead of being informed on every change, we will get a list, a journal, of changes since the last time we checked. Using journal based observation, the age is only influenced by the time it takes to process the changes and the freshness by the amount of changes in each journal.</p>
<p>The third option, let the CMS update Solr, is obviously the most ideal. Instead of crawling or observing the CMS and update Solr when something changes, the CMS could directly propagate all changes to Solr. The age and freshness of Solr would be perfect, as changes to data can be made available at the same time to both the CMS and Solr. Having a CMS that is built using an event-driven, highly decoupled architecture, for instance using a CQRS framework, like <a href=http://code.google.com/p/axonframework/">Axon Framework</a>, would make extending the CMS with the capability for updating Solr very easy. However, currently no Java based CMS provides this capability out of the box.</p>
<p><span style="font-size: medium;"><strong>Conclusion</strong></span></p>
<p>Trying to solving the problem of making the information from different CMS solutions search-able using Solr gave some interesting insights in the classic data replication problem. Using Age and Freshness as a guideline, letting the CMS update Solr looks like the best solution, but is currently not usable when looking at different CMS solutions. Both asynchronous observation and crawling have up and downsides, but seem to be the most generic solution. Journaled observation, when looking at the Age and Freshness and different CMS systems, looks the most promising.</p>
<p>In the next blog posts as part of this series, I will go into more detail of actually implementing this integration for a number of widely used CMS solutions like Magnolia and Hippo. Stay tuned&#8230;</p>
<p><span style="font-size: medium;"><strong>References</strong></span></p>
<p><a href="http://oak.cs.ucla.edu/~cho/papers/cho-tods03.pdf">Effective Page Refresh Policies For Web Crawlers</a><br />
<a href="http://www.axonframework.org">Axon framework</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.jteam.nl/2010/03/31/searching-your-java-cms-using-apache-solr-introduction/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Language analysis comparable to Fast / Endeca for Solr</title>
		<link>http://blog.jteam.nl/2010/03/30/language-analysis-comparable-fast-endeca-available-solr/</link>
		<comments>http://blog.jteam.nl/2010/03/30/language-analysis-comparable-fast-endeca-available-solr/#comments</comments>
		<pubDate>Tue, 30 Mar 2010 08:15:21 +0000</pubDate>
		<dc:creator>Martijn van Groningen</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Enterprise Search]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Lucene]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Solr]]></category>

		<guid isPermaLink="false">http://blog.jteam.nl/?p=1892</guid>
		<description><![CDATA[Good, solid language analysis is a very important asset for the quality of your search results. It is one of the features that for instance Microsoft Fast and Endeca are using as one of their unique selling points. However, you can get the same powerful analysis when using Apache Solr to implement your search. The [...]]]></description>
			<content:encoded><![CDATA[<p>Good, solid language analysis is a very important asset for the quality of your search results. It is one of the features that for instance Microsoft Fast and Endeca are using as one of their unique selling points. However, you can get the same powerful analysis when using Apache Solr to implement your search.</p>
<p><span id="more-1892"></span><br />
The thing is that both Ms Fast and Endeca did not implement their language analysis themselves. They use an existing, commercial solution called the Rosetta Linguistics Platform (RLP) provided by <a href="http://basistech.com/">Basis Technologies</a> under the hood to provide their sophisticated language analysis capabilities. This is a good thing, as RLP also provides integration components for Apache Solr. This allows anyone using Solr to easily plug in RLP advanced language capabilities into their solution.</p>
<p><strong>What is RLP?</strong><br />
The Rosette Linguistics Platform (RLP) is a commercial solution that allows you to perform linguistic analysis of text in many languages (English as well as dozens of major European, Asian, and Middle Eastern languages). Besides that RLP also supports advanced entity extraction capabilities, base noun detection, sentence boundary detection and even part of speech tagging. However, as RLP is a commercial product it comes with a price tag.<br />
However, we feel that RLP has a lot of potential when you are in need of sophisticated language capabilities. That&#8217;s why we want to show you how to integrate RLP into your solution based on Apache Solr.</p>
<p><strong>Installing the RLP platform for Solr</strong><br />
RLP and Solr are two separate systems. Integration between Solr and RLP is quite straight forward. Basis provides extensive documentation on how to setup the RLP on your machine. With the RLP configuration you can customize the actual language analysis. This is not done directly via Solr. Installing and configuring RLP is explained in RLP documentation that is included with RLP bundle.</p>
<p>Configuring Solr to use RLP for analyzing your documents is also relatively easy to setup. In order to use RLP&#8217;s language analysis in Solr you have to configure the <code>RLPTokenizerFactory</code> as tokenizer for the specific fields you want to use it on. As RLP is not written in Java, JNI is used to integrate a Java application with RLP. In order for Solr to integrate with RLP you must set certain environment variables that point to the RLP installation. Basis has quite extensive documentation for the Solr integration with RLP as well, which is included in the RLP Solr bundle.</p>
<p><strong>RLP&#8217;s stemming capabilities</strong><br />
Terms like verbs, nouns and adjectives appear in different forms. When searching the different forms of a term, it can result in a miss. For example if you search for the term customize, but the token in the index is customization, your are unlikely to find results with this term. The solution to this is <a href="http://en.wikipedia.org/wiki/Stemming">stemming</a>. Stemming reduces a term to a base form. There are many ways to do this but the most common way is <a href="http://en.wikipedia.org/wiki/Stemming#Suffix_Stripping_Algorithms">to remove the terms&#8217; suffix</a> according to some basic rules. In our case customize and customization would be stemmed to customiz. Stemming is usually applied during indexing and during searching (stemming the search query). So whether we search for customization or customize does not matter, for both terms we&#8217;ll get the same result. Another example is go and going, both forms are stemmed to go.</p>
<p>In all languages there are terms that are irregular. For example the verb to buy. The present tense is buy and the the past tense is bought. Using a suffix based stemmer, will not create a common base form for the tokens. The create a proper base form the stemmer needs to have some basic knowledge of a language. Stemmers who do this usually use <a href="http://en.wikipedia.org/wiki/Stemming#Lemmatisation_Algorithms">lemmatisation</a>. Using this algorithm buy and bought would both be stemmed to buy. Lemmatisation based stemmers will stem more terms to a common base form and therefore increase findability of documents in your index.</p>
<p>RLP&#8217;s stemming capabilities fall into the last category of stemming algorithms and as you can see in the table below the stemming is quite powerful.</p>
<table>
<tr>
<th>Unstemmed token</th>
<th>Stemmed token</th>
</tr>
<tr>
<td>mice</td>
<td>mouse</td>
</tr>
<tr>
<td>mouse</td>
<td>mouse</td>
</tr>
<tr>
<td>been</td>
<td>be</td>
</tr>
<tr>
<td>is</td>
<td>be</td>
</tr>
</table>
<p><strong>Advantages of using RLP</strong><br />
Why would you use RLP in conjunction with Solr? RLP provides you with really powerful language analysis. Solr is a extensible open-source search engine. By integrating RLP with Solr, RLP will compliment the language analysis provided by Solr and increase the quality of your search results. As seen in the previous table, the better stemming capabilities increases the likelihood for relevant documents to be found.</p>
<p>If you consider using RLP for your project or solution, please feel free to <a href="http://www.jteam.nl/contact.html">contact us</a>, so we can help you both to make a decision as well as help you implement it.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.jteam.nl/2010/03/30/language-analysis-comparable-fast-endeca-available-solr/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Spatial Solr Plugin 1.0-RC4</title>
		<link>http://blog.jteam.nl/2010/03/30/spatial-solr-plugin-1-0-rc4/</link>
		<comments>http://blog.jteam.nl/2010/03/30/spatial-solr-plugin-1-0-rc4/#comments</comments>
		<pubDate>Tue, 30 Mar 2010 08:13:10 +0000</pubDate>
		<dc:creator>Chris Male</dc:creator>
				<category><![CDATA[Enterprise Search]]></category>
		<category><![CDATA[Lucene]]></category>
		<category><![CDATA[Solr]]></category>
		<category><![CDATA[Spatial Search]]></category>

		<guid isPermaLink="false">http://blog.jteam.nl/?p=1934</guid>
		<description><![CDATA[I am pleased to announce the latest release of our Spatial Solr Plugin, v1.0-RC4. This release is a backwards compatible with RC3, and contains the following changes: PDF documentation has been improved to remove inconsistencies in request parameter and source code package names SpatialFilter now includes hashCode and equals implementations, facilitating storage of the filter [...]]]></description>
			<content:encoded><![CDATA[<p>I am pleased to announce the latest release of our <a href="http://www.jteam.nl/products/spatialsolrplugin-download.html">Spatial Solr Plugin, v1.0-RC4</a>.  This release is a backwards compatible with RC3, and contains the following changes:</p>
<ul>
<li>PDF documentation has been improved to remove inconsistencies in request parameter and source code package names</li>
<li>SpatialFilter now includes hashCode and equals implementations, facilitating storage of the filter in caches</li>
</ul>
<p>JTeam&#8217;s Solr Spatial Plugin (SSP) is a standalone plugin that provides efficient and extensible spatial search support to both Solr and Lucene.  You can find more information about the plugin <a href="http://www.jteam.nl/products/spatialsolrplugin.html">here</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.jteam.nl/2010/03/30/spatial-solr-plugin-1-0-rc4/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>First Dutch Lucene User Group Meetup</title>
		<link>http://blog.jteam.nl/2010/01/20/first-dutch-lucene-user-group-meetup/</link>
		<comments>http://blog.jteam.nl/2010/01/20/first-dutch-lucene-user-group-meetup/#comments</comments>
		<pubDate>Wed, 20 Jan 2010 10:50:09 +0000</pubDate>
		<dc:creator>Uri Boness</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Enterprise Search]]></category>
		<category><![CDATA[Lucene]]></category>
		<category><![CDATA[Search]]></category>
		<category><![CDATA[Solr]]></category>
		<category><![CDATA[User Group]]></category>

		<guid isPermaLink="false">http://blog.jteam.nl/?p=1654</guid>
		<description><![CDATA[August last year, we announced the new Dutch Lucene User Group with the intention to provide a platform for knowledge sharing and discussions for the Lucene community in The Netherlands. Obviously, beyond setting up a dedicated website for that, the main activity of this usergroup should be in the form of periodic meetups. Unfortunately it [...]]]></description>
			<content:encoded><![CDATA[<p>August last year, we <a href="http://blog.jteam.nl/2009/08/26/announcing_lucene_user_group/" target="_blank">announced</a> the new <a href="http://www.lucene-nl.org/" target="_blank">Dutch Lucene User Group</a> with the intention to provide a platform for knowledge sharing and discussions for the Lucene community in The Netherlands. Obviously, beyond setting up a dedicated website for that, the main activity of this usergroup should be in the form of periodic meetups. Unfortunately it didn&#8217;t work out to execute it last year, but this year we would really like to get it going and put more efforts in it, and first step I guess is setting up a first meetup.</p>
<p>So I&#8217;m pleased to announce the first Dutch Lucene User Group Meetup. It will take place on 17th February (Wednesday) at the JTeam headquarters office. This first meetup will be split into two parts:</p>
<ul>
<li>Introduction to the user group and the members. We&#8217;ll have a discussion about what we would all like to see coming out of this user group and what activities we would like to have.</li>
<li>The next part will be more technical. <a href="http://www.beyondtrees.com/" target="_blank">Anne Veling</a> will share with us some of his experience of large scale Solr deployment that he&#8217;s working on.</li>
</ul>
<p>If you wish to attend, please send us an email to: events@lucene-nl.org</p>
<p><strong>Date:</strong> 17th February 2010</p>
<address><span style="font-style: normal;"><strong>Time:</strong> 17:00<br />
<strong>Location: </strong></span></address>
<address>Frederiksplein 1</address>
<address>1017XK Amsterdam</address>
<address>The Netherlands</address>
]]></content:encoded>
			<wfw:commentRss>http://blog.jteam.nl/2010/01/20/first-dutch-lucene-user-group-meetup/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Being at the fore of Apache Solr and Lucene Development</title>
		<link>http://blog.jteam.nl/2009/12/08/being-at-the-fore-of-apache-solr-and-lucene-development/</link>
		<comments>http://blog.jteam.nl/2009/12/08/being-at-the-fore-of-apache-solr-and-lucene-development/#comments</comments>
		<pubDate>Tue, 08 Dec 2009 13:44:37 +0000</pubDate>
		<dc:creator>Chris Male</dc:creator>
				<category><![CDATA[Enterprise Search]]></category>
		<category><![CDATA[FieldCollapsing]]></category>
		<category><![CDATA[LocalSolr]]></category>
		<category><![CDATA[Lucene]]></category>
		<category><![CDATA[Solr]]></category>

		<guid isPermaLink="false">http://blog.jteam.nl/?p=1012</guid>
		<description><![CDATA[JTeam has always prided itself on being at the forefront of custom software development and exceeding customer expectations. This has been further confirmed with the release of the most voted for features for Apache Solr 1.5, the next version to be developed. As highlighted by Grant Ingersoll, the Solr committer who released the figures, the [...]]]></description>
			<content:encoded><![CDATA[<p>JTeam has always prided itself on being at the forefront of custom software development and exceeding customer expectations.  This has been further confirmed with the release of the <a href="https://issues.apache.org/jira/browse/SOLR?report=com.atlassian.jira.plugin.system.project:popularissues-panel">most voted for features for Apache Solr 1.5</a>, the next version to be developed.</p>
<p><span id="more-1012"></span></p>
<p>As highlighted by Grant Ingersoll, the Solr committer who released the figures, the most voted for feature <em>by far</em> is <a href="https://issues.apache.org/jira/browse/SOLR-236">field collapsing</a>, otherwise known as result grouping, an extension to Solr primarily developed and maintained by my colleague Martijn van Groningen.  Field collapsing allows results which have the same value for a certain field to be collapsed into a single result.  This can prove useful when you get 1000 variations of the same heater as the result of a query, as is the case for one of our <a href="http://www.welke.nl">current customers</a>.  You can find out more about field collapsing from Martijn&#8217;s <a href="http://blog.jteam.nl/2009/10/20/result-grouping-field-collapsing-with-solr/">blog</a> <a href="http://blog.jteam.nl/2009/11/11/improved-field-collapse-response/">entries</a>. </p>
<p>The second most voted for feature is incorporating <a href="https://issues.apache.org/jira/browse/SOLR-773">Local Lucene/Solr</a>.  This extension allows Solr users to conduct location based searches, such as where are pizza shops near my house, through the Spatial Lucene contrib.  I personally have been very involved in the development and <a href="http://blog.jteam.nl/2009/08/03/geo-location-search-with-solr-and-lucene/">presentation</a> of this feature, and I have followed up on my initial contributions with a fully refactored version that is available <a href="http://www.jteam.nl/news/spatialsolr">here</a> on the JTeam.  We will be contributing these developments, particularly those on the Lucene side, back to the community in a matter of days.</p>
<p>We have used both features in <a href="http://www.ilocal.nl">multiple</a> <a href="http://www.welke.nl">projects</a> and have always received very positive responses.  However, both features are still only Jira issues, so if you haven&#8217;t already voted for them, please do, so we can ensure that they become part of the next version of Solr.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.jteam.nl/2009/12/08/being-at-the-fore-of-apache-solr-and-lucene-development/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A new and improved Spatial Solr</title>
		<link>http://blog.jteam.nl/2009/11/18/a-new-and-improved-spatial-solr/</link>
		<comments>http://blog.jteam.nl/2009/11/18/a-new-and-improved-spatial-solr/#comments</comments>
		<pubDate>Wed, 18 Nov 2009 08:47:26 +0000</pubDate>
		<dc:creator>Preeti Gholap</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Enterprise Search]]></category>
		<category><![CDATA[Geo-Location]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Lucene]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Solr]]></category>
		<category><![CDATA[Support]]></category>

		<guid isPermaLink="false">http://blog.jteam.nl/?p=1348</guid>
		<description><![CDATA[Introducing the Solr Spatial Plugin What do a directory services company, a wholesaler of bathroom fittings,  a social events guide, an oceanographic data centre and the pan-European library initiative have in common? They all need to offer their clients the ability to search and filter results within a flexible geographic area, defined by the user. [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Introducing the Solr Spatial Plugin</strong></p>
<p>What do a directory services company, a wholesaler of bathroom fittings,  a social events guide, an oceanographic data centre and the pan-European library initiative have in common? They all need to offer their clients the ability to search and filter results within a flexible geographic area, defined by the user.</p>
<p>With a variety of businesses needing to customize search results to the preferences of a narrowly targeted audience, there&#8217;s an increasing demand for incorporating geographical location information into standard search functionality.</p>
<p>In response, JTeam has recently launched the <strong>Solr </strong><strong>Spatial </strong><strong>Plugin (SSP)</strong>: a free, standalone, enterprise-ready plugin enabling <strong>location based search</strong>, built on top of the open source project Apache Solr.</p>
<p><span id="more-1348"></span><br />
It&#8217;s main characteristics are:</p>
<ul>
<li>Provide a complete, consistent, robust and fast implementation of advanced geospatial algorithms</li>
<li>Act as a standalone pluggable extension to Solr</li>
<li>Written in 100% Java</li>
<li>Compatible with Apache Solr and Lucene  1</li>
<li>Open source</li>
<li>Well documented and comes with support</li>
<li>Enterprise ready</li>
</ul>
<p>SSP started out its life as a patch for Solr Spatial Search (Solr-773) and Spatial Lucene (Lucene-1732) and extends Solr and Lucene with previously missing geodetic search functions while improving on the speed of the result and performance when dealing with a large data set.  It does this through better query parsing and multi-threaded filtering; also included are improved extensibility and documentation.</p>
<p>The author of the SSP plugin- JTeam Search specialist Chris Male &#8211; explains the technical underpinnings in his earlier blog on <a href="http://blog.jteam.nl/2009/08/03/geo-location-search-with-solr-and-lucene/" target="_blank">Geo-location Search</a>.</p>
<p>General information on the SSP including the Roadmap and  <a href="http://www.jteam.nl/news/spatialsolr" target="_blank">FAQ</a> is  available on the <a href="http://www.jteam.nl" target="_blank">JTeam website</a>.</p>
<p>While the plugin is freely downloadable, JTeam provides <strong>installation and configuration support</strong> on the SSP as well as<strong> annual support contracts</strong> for both SSP and Solr.</p>
<p>JTeam can also create <strong>customized versions of the SSP</strong>, tailored to your needs.</p>
<p><strong><a href="http://www.jteam.nl/dms/downloads/spatial-solr-1-0-RC3/spatial-solr-1.0-RC3.zip" target="_blank">Download the SSP</a></strong></p>
<p><a href="mailto:salessupport@jteam.nl"><strong>Contact JTeam for SSP Support and Customization options</strong><br />
</a></p>
<p><img class="aligncenter size-medium wp-image-1350" title="SSP logo1" src="http://blog.jteam.nl/wp-content/uploads/2009/11/SSP-logo1-300x186.png" alt="SSP logo1" width="300" height="186" /></p>
<p>1 SSP is currently compatible with Solr 1.4 &amp; Lucene 2.9</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.jteam.nl/2009/11/18/a-new-and-improved-spatial-solr/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
