[译]lucene&solr 2011年盘点
原文:http://java.dzone.com/articles/lucene-solr-year-2011-review
2011年已经过去,在这里针对本年lucene和solr领域发生的点点滴滴进行一下回顾,也算是对lucene和solr的一个盘点.
lucene成为apache基金会项目已逾十年(实际上lucene存在的历史已超过10年),solr作为apache基金项目也差不多度过了六个春秋.而这两个项目的发展离不开Otis(http://twitter.com/otisg)的长期努力.
在这一年里,solr和lucene发生了非常显著的变化,增加了大量新的功能,而这个变化可以说超过以往任何一年.
其中最激动人心的功能莫过于近实时搜索功能(NearReal-Timesearchhttp://search-lucene.com/?q=NRT)的实现,即对文档的修改会立马出现在搜索结果中.虽然NRT依然还在继续改进中,但是很多用户已经开始使用该功能.
字段折叠(FieldCollapsinghttp://wiki.apache.org/solr/FieldCollapsing)也是solr社区中长期以来期待的一个功能.这个功能已在今年实现.现在solr和lucene用户可以基于字段和查询条件对结果集进行进行分组.并实现了对分组进行控制.此外还可以基于分组进行facet运算(而以前只能基于文档).
在这一年,lucene也引入了facetingmodule(https://issues.apache.org/jira/browse/LUCENE-3079),从此以后,facet将不再是solr的专利.lucene用户可以进行facet运算了.
从今年开始,你可以通过使用Joinmodule(http://wiki.apache.org/solr/Join)对父子关联的文档建索引,这样我们可以在查询的过程中根据文档索引将父子文档进行连接.
2011年,在多语言支持方面(http://wiki.apache.org/solr/LanguageAnalysis#Stemming),solr和lucene也取得了重大突破:加入了KStemFilterEnglishstemmer(http://wiki.apache.org/solr/LanguageAnalysis#Notes_about_solr.KStemFilterFactory),提供了对Unicode4完整的支持,增加了对中文和日文的支持,增加了一个新的stemmer保护机制.降低了synonymfilter对内存的消耗.其中最大的一个增强是集成了Hunspell(http://wiki.apache.org/solr/LanguageAnalysis#Notes_about_solr.HunspellStemFilterFactory),这样可以使用OpenOffice所支持的语言进行stemming处理.
lucene3.5.0的发布,大幅度的降低了term词典的内存消耗(在对term词典处理时,比以前减少了3~5倍).
以前在使用lucene的时候,如果对大数据量的搜索结果进行分页处理,从头翻到尾会出现问题.而在lucene3.5.0这个版本,通过引入searchAfter方法进行了彻底的解决.
在这一年,lucene和solr提供了一个新的,更高效,更可靠的基于TermVector的高亮功能.
在这一年,solr集成了扩展的Dismax查询解析器(http://search-lucene.com/?q=Extended+Dismax),进一步提高了搜索结果的质量.
这一年,你可以使用函数(http://wiki.apache.org/solr/FunctionQuery#Sort_By_Function)对搜索结果进行排序(比如根据某个值到指定点的距离进行排序),并且提供了一个新的根据空间搜索过滤器.
solr也提供了一个新的,基于FST机器人(可以显著的降低内存消耗)的suggest(http://wiki.apache.org/solr/Suggester)/自动完成搜索功能,如果你对这个功能感兴趣,可以关注一下Sematext(http://sematext.com/products/autocomplete/index.html)提供的自动完成搜索功能.
这里还需要提到的就是solr即将提供的新的事务日志(transactionloghttps://issues.apache.org/jira/browse/SOLR-2700)支持,该支持将实现实时返回(real-timegethttps://issues.apache.org/jira/browse/SOLR-2656)的功能,即在添加一个文档之后你能立即根据id返回该文档.事务日志也将用于SolrCloud分布式节点的恢复.
说到SolrCloud(http://wiki.apache.org/solr/SolrCloud)这里(http://blog.sematext.com/2011/09/14/solr-digest-spring-summer-2011-part-2-solr-cloud-and-near-real-time-search/)还有一篇介绍.对于SolrCloud,用一句话来概括,就是运用最新的设计原则并借助其他软件模块(比如zookeeper)更快速的搭建一套更强大solr分布式集群.其核心思想就是拒绝单点故障,采用中心化的集群和配置管理,打破原有的master-slave架构,做到容灾自动切换和动态调整.
2010年将两个项目的开发进行整合之后,这两个项目的发展非常迅猛.在2011年,lucene和solr在众多committer们的大力支持下发布了5个版本.三月,lucene和solr3.1版本发布,3个月后的6月4日,3.2版本发布.一个月之后,7月1日,lucene和solr3.3版本发布.9月14日,3.4版本发布,11月,3.5.0版本顺利发布.
在2011年,lucene和solr相关的会议也不少,首先登场是是5月份在旧金山举行的LuceneRevolution,otis在大会上做了题为"SearchAnalytics:What?Why?How?"(http://java.dzone.com/articles/lucene-solr-year-2011-review)的演讲,其他干货猛击这里(http://lucenerevolution.com/2011/agenda).在六月份的Buzzwords大会上,otis在大会上做了"SearchAnalytics:What?Why?How?"的升级版演讲.相关资料可参考官方网站:http://berlinbuzzwords.de.10月份,在巴塞罗那举行了专门针对lucene和solr的LuceneEurocon2011大会.Otis在大会上做了主题为"SearchAnalytics:BusinessValue&BigDataNoSQLBackend"(http://www.lucidimagination.com/sites/default/files/file/Eurocon2011/otis_gospodnetic_search_analytics_lucene_eurocon_2011.ppt)的主题演讲,而Rafał(http://twitter.com//kucrafal)在大会上做了"Explaining&VisualizingSolr'explain'information"(http://www.lucidimagination.com/sites/default/files/file/Eurocon2011/Understanding%20and%20Visualizing%20Solr%20Explain%20information%20-%20Solr.pl%20-%20version%202.pdf)的演讲.
在2011年,lucene和solr又迎来了一批新的志同道合者:
•AndiVajda
•ChrisMale
•DawidWeiss
•ErickErickson
•JanHøydahl
•MartinvanGroningen
•StanisławOsiński
对于一个成功的开源项目,相关的图书对使用者也是必不可少.虽然今年LuceneinAction没有推出新的版本,但是RafałKuć在今年7月给我们带来了它的新作"Solr3.1Cookbook".在该书中,为解决solr的一些常见问题,Rafał给出了他的答案.而DavidSmiley和EricPugh在今年十一月推出了"ApacheSolr3EnterpriseSearchServer"的新版本.
至于2012年,lucene和solr会带来什么新的惊喜,让我们拭目以待.