Recently I try to search some code in Github and I noted from the blog the engine behind is ElasticSearch (One interesting thing is its detailed & technical explanation for its recent outage)
Elastic Search – From the official site
We want our search solution to be fast, we want a painless setup and a completely free search schema, we want to be able to index data simply using JSON over HTTP, we want our search server to be always available, we want to be able to start with one machine and scale to hundreds, we want real-time search, we want simple multi-tenancy, and we want a solution that is built for the cloud.
Elastic Search is based on Lucene (so far I dont find any non-open source popular search engine use other indexer). Therefore its position is somewhat close to Apache Solr. So some Discussions for “elastic search vs Solr” and I recommend this deep review
CouchDB and Elastic Search is definitely a good fit. CouchDB use JSON to store the document, while Elastic Search is able to render the document fields itself – so basically the whole couchDB document can be put into the index / as retrieved document.
(While I believe search should not replace couchDB’s native rendering in basic use cases, for it is faster and sorted etc.)
This is also an event-driven-model. With the River concept, and the stream _change couchDB provides, changes will be submitted to the Elastic Search and for indexing. Convention over configuration, no explicit setup of filtering or other things it just works.
Percolation is a very interesting feature that one can register queries against index and send percolate requests with document and get back which queries are matched.
On the other hand, I spent more time to get the search UI working. The place I look for insights is definitely the ElasticSearch site itself, which is based on jQuery UI autocomplete. Quite nice combination, while one need to get familiar with the API / css. This Plugin is also needed to render generated HTML correctly