之前做了一个基于lucene3.0的全文检索模块,主要难点在于如何实时更新索引。
下面简单说一下我的思路:
首先,针对要被实时搜索到的数据库表建立触发器,如果有变动则在变化表里插入此条记录。
其次,写一个任务轮询扫描变化表,如果发现此变化表,则发起更新索引的需求。
目前数据量小,没有发现什么问题,如果以后数据量大,频繁的发起更新索引会导致io资源不够,而且索引文件大了以后每次更新所以都会很慢,所以下一步的工作安排如下:
1 索引文件分为两部分:
频繁更新部分:将最新的一短时间(根据业务需要而定)的索引文件单独分开,这样就会避免索引文件太大导致的更新速度很慢的问题。
老的部分:只在索引文件合并及合并搜索结果时用到。
2 如何实现检索两个索引文件及排序
3 如何实现两个索引文件的合并。