Background
Lucene/Solr search and commit architecture is designed to work off a point-in-time snapshots of the index.
Any add/update/deletion needs a commit to be visible to searches (or atleast a soft-commit). soft-commit still re-opens
the SolrIndexSearcher object and can be a performance limitation if the soft-commits happen more than one per second. Realtime-search
does away with the point-in-time snapshots and makes available a near realtime view of the index. So any changes made to the index are immediately visible. Performance
is not a limitation as it does not close the SolrIndexSearcher object but makes available a new NRT Reader to the searcher.
Realtime-search is different from realtime-get which allows you to check if a document exists in the transaction log and does not have search capability.
Realtime-search allows full search, so you could search by id, text, location, etc. using boolean, dismax, faceting, range queries.
Realtime-search does not need the transaction update log needed by realtime-get. So you can turn this off for improved performance.
autoCommit freq can also be increased to an hr from the default of 15 secs.
Performance
A 70,000 document insert with searches in realtime has been observed on a 4 core linux system. This is a real use case of realtime-search at a user location.
How to enable it
Add the following tag to solrconfig.xml
<realtime visible="150">true</realtime>
"visible" attribute controls the number of milliseconds before a document becomes visible to search. So setting this to 0 means any document added/updated becomes visible almost immediately.
Download
Apache Solr 4.0 with RankingAlgorithm to play around with Realtime-search.