Drop in replacement for sakai's legacy search service which uses ElasticSearch (http://elasticsearch.org)
This service runs embedded in Sakai it does not require a standalone search server. Like the legacy search service docs are indexed by notification sent via the event service. This handoff simply puts the reference and associated metadata into ES. A timer task runs and looks for docs that do not have content, and then digests the content and stores that in the ES index. This task is necessary to off load this work from any user initiated thread so in the case of large files we aren't holding on to user threads for log periods of time.
To enable search set the following (this is no different than previously):
search.enable = true
To expose the ElasticSearch rest services set the following:
Any other elasticsearch properties can be set in the sakai.properties by simply prepending the elasticsearch config name with "elasticsearch." these will then flow into the initialization. See http://www.elasticsearch.org/ for more information on options.
For seeing elasticsearch queries and other useful stuff in the tomcat logs try:
log.config.1 = DEBUG.org.sakaiproject.search.elasticsearch
log.config.2 = DEBUG.org.elasticsearch
The bulk of this work is simply a backend replacement that fixes most of the indexing/merging problems that have been experienced in large deployments. There are two notable frontend changes. There is now an autosuggest feature that is part of the search box. There is also the ability to search for specific types by using a type followed by a colon and the search term. The type matches the entity content producer name. So for example you can search for just sites, site:"my site", or just chats, chat:dude, or just content:my_stuff.
For implementation detail and documentation go here: https://confluence.sakaiproject.org/display/~jbush/Elasticsearch