实时搜索是去年提的比较多的一个功能,今年似乎很少再有人去以这个为噱头宣传了,估计各家公司都实现了自己的实时搜索。目前常见的做法就是索引分两份,内存一份,硬盘一份,所有在线的更改索引操作都在内存中进行,定时或者定量的将内存中的数据合并到硬盘上。
这篇ppt有关于实时搜索实现难点的更详细介绍:http://www.slideshare.net/Leechael/ss-4836416
开源实时搜索引擎的现状是轻量级的项目无法应对大数据,而能够应付大数据的解决方案学习成本比较高,有时学习曲线会异常陡峭。
- 使用redis:Auto Complete with Redis虽然是在讲auto complete,但是可以根据类似的思路去实现全文搜索,适用于数据量较小的场合(短文本,10万左右)。当数据量增大时可以用者也的办法。
- 基于xapian开源实时搜索引擎:http://code.google.com/p/py-instantse/
- lucene的near real time search:关于lucene实时搜索的帖子很多,lucene社区也很成熟,所以使用lucene实现实时搜索是个不错的选择。
- zoie:linkedin的开源实时搜索引擎,twitter,yammer和网易都在使用,这个项目很诡异,可能推广的不够,感兴趣的人不多,所以缺少文档和demo,想琢磨只能去看测试,另外,由于它基于lucene实现的,如果没有lucene的基础,直接去研究zoie的话将是一场噩梦。
- IndexTank:linkedin收购的一个搜索引擎公司,之后将它开源了,估计是一次人才收购,近半年没有更新了。