原文: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发生了非常显著的变化, 增加了大量新的功能, 而这个变化可以说超过以往任何一年.
其中最激动人心的功能莫过于近实时搜索功能(Near Real-Time search http://search-lucene.com/?q=NRT )的实现, 即对文档的修改会立马出现在搜索结果中. 虽然NRT依然还在继续改进中, 但是很多用户已经开始使用该功能.
字段折叠(Field Collapsing http://wiki.apache.org/solr/FieldCollapsing ) 也是solr社区中长期以来期待的一个功能. 这个功能已在今年实现. 现在solr和lucene用户可以基于字段和查询条件对结果集进行进行分组. 并实现了对分组进行控制. 此外还可以基于分组进行facet运算(而以前只能基于文档).
在这一年, lucene也引入了faceting module(https://issues.apache.org/jira/browse/LUCENE-3079 ), 从此以后, facet将不再是solr的专利. lucene用户可以进行facet运算了.
从今年开始, 你可以通过使用Join module(http://wiki.apache.org/solr/Join ) 对父子关联的文档建索引, 这样我们可以在查询的过程中根据文档索引将父子文档进行连接.
2011年, 在多语言支持方面(http://wiki.apache.org/solr/LanguageAnalysis#Stemming ) ,solr和lucene也取得了重大突破: 加入了KStemFilter English stemmer(http://wiki.apache.org/solr/LanguageAnalysis#Notes_about_solr.KStemFilterFactory ) , 提供了对Unicode 4完整的支持, 增加了对中文和日文的支持, 增加了一个新的stemmer保护机制. 降低了synonym filter对内存的消耗. 其中最大的一个增强是集成了Hunspell(http://wiki.apache.org/solr/LanguageAnalysis#Notes_about_solr.HunspellStemFilterFactory ), 这样可以使用OpenOffice所支持的语言进行stemming处理.
lucene 3.5.0的发布, 大幅度的降低了term词典的内存消耗(在对term词典处理时, 比以前减少了3~5倍).
以前在使用lucene的时候, 如果对大数据量的搜索结果进行分页处理, 从头翻到尾会出现问题. 而在lucene 3.5.0这个版本, 通过引入searchAfter方法进行了彻底的解决.
在这一年, lucene和solr提供了一个新的, 更高效, 更可靠的基于Term Vector的高亮功能.
在这一年, 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即将提供的新的事务日志(transaction log https://issues.apache.org/jira/browse/SOLR-2700 )支持, 该支持将实现实时返回(real-time get https://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和solr 3.1版本发布, 3个月后的6月4日, 3.2版本发布. 一个月之后, 7月1日, lucene和solr 3.3版本发布. 9月14日, 3.4版本发布, 11月, 3.5.0版本顺利发布.
在2011年, lucene和solr相关的会议也不少, 首先登场是是5月份在旧金山举行的Lucene Revolution, otis在大会上做了题为"Search Analytics: What? Why? How?"(http://java.dzone.com/articles/lucene-solr-year-2011-review )的演讲, 其他干货猛击这里 (http://lucenerevolution.com/2011/agenda ) . 在六月份的Buzzwords大会上, otis在大会上做了"Search Analytics: What? Why? How?"的升级版演讲. 相关资料可参考官方网站: http://berlinbuzzwords.de . 10月份, 在巴塞罗那举行了专门针对lucene和solr的 Lucene Eurocon 2011 大会. Otis 在大会上做了主题为"Search Analytics: Business Value & BigData NoSQL Backend"(http://www.lucidimagination.com/sites/default/files/file/Eurocon2011/otis_gospodnetic_search_analytics_lucene_eurocon_2011.ppt)的主题演讲, 而Rafał(http://twitter.com//kucrafal )在大会上做了"Explaining & Visualizing Solr '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又迎来了一批新的志同道合者:
•Andi Vajda
•Chris Male
•Dawid Weiss
•Erick Erickson
•Jan Høydahl
•Martin van Groningen
•Stanisław Osiński
对于一个成功的开源项目, 相关的图书对使用者也是必不可少. 虽然今年Lucene in Action没有推出新的版本, 但是Rafał Kuć在今年7月给我们带来了它的新作"Solr 3.1 Cookbook". 在该书中, 为解决solr的一些常见问题, Rafał给出了他的答案. 而David Smiley 和 Eric Pugh在今年十一月推出了"Apache Solr 3 Enterprise Search Server"的新版本。
至于2012年,lucene和solr会带来什么新的惊喜,让我们拭目以待。