<inputvalue="incubator.apache.org"name="sitesearch"type="hidden"><inputonFocus="getBlank (this, 'Search the site with google');"size="25"name="q"id="query"type="text"value="Search the site with google">
Solr is a standalone enterprise search server with a web-services like API. You put documents in it (called "indexing") via XML over HTTP. You query it via HTTP GET and receive XML results.
<li>Dynamic Fields enables on-the-fly addition of fields</li>
<li>CopyField functionality allows indexing a single field multiple ways, or combining multiple fields into a single searchable field</li>
<li>Explicit types eliminates the need for guessing types of fields</li>
<li>External file-based configuration of stopword lists, synonym lists, and protected word lists</li>
</ul>
<aname="N1007A"></a><aname="Query"></a>
<h3class="boxed">Query</h3>
<ul>
<li>Sort specifications added to query language</li>
<li>Constant scoring range and prefix queries - no idf, coord, or lengthNorm factors, and no restriction on the number of terms the query matches.</li>
<li>Function Query - influence the score by a function of a field's numeric value or ordinal</li>
<li>Performance Optimizations</li>
</ul>
<aname="N1008F"></a><aname="Core"></a>
<h3class="boxed">Core</h3>
<ul>
<li>Pluggable query handlers and extensible XML data format</li>
<li>Document uniqueness enforcement based on unique key field</li>
<li>Batches updates and deletes for high performance</li>
<li>User configurable commands triggered on index changes</li>
<li>Searcher concurrency control</li>
<li>Correct handling of numeric types for both sorting and range queries</li>
<li>Ability to control where docs with the sort field missing will be placed</li>
<li>Support for dynamic grouping of search results</li>
</ul>
<aname="N100B0"></a><aname="Caching"></a>
<h3class="boxed">Caching</h3>
<ul>
<li>Configurable Query Result, Filter, and Document cache instances</li>
<li>Pluggable Cache implementations</li>
<li>Cache warming in background
<ul>
<li> When a new searcher is opened, configurable searches are run against
it in order to warm it up to avoid
slow first hits. During warming, the current searcher handles live requests.
</li>
</ul>
</li>
<li>Autowarming in background
<ul>
<li>The most recently accessed items in the caches of the current
searcher are re-populated in the new searcher, enabing high cache hit
rates across index/searcher changes.</li>
</ul>
</li>
<li>Fast/small filter implementation</li>
<li>User level caching with autowarming support</li>
</ul>
<aname="N100D5"></a><aname="Replication"></a>
<h3class="boxed">Replication</h3>
<ul>
<li>Efficient distribution of index parts that have changed via rsync transport</li>
<li>Pull strategy allows for easy addition of searchers</li>
<li>Configurable distribution interval allows tradeoff between timeliness and cache utilization</li>
</ul>
<aname="N100E7"></a><aname="Admin+Interface"></a>
<h3class="boxed">Admin Interface</h3>
<ul>
<li>Comprehensive statistics on cache utilization, updates, and queries</li>
<li>Text analysis debugger, showing result of every stage in an analyzer</li>