除文字内容外,我的文档还有可以搜索的标签。现在的问题是标签经常变化,每次添加或删除标签时我都必须调用UpdateDocument,这对于数百个文档来说非常慢。
是否有任何表现良好的策略用于存储经常更改且需要使用Lucene进行搜索的标记?我一直在考虑将标签保存在单独的文档中以保持较小,但我无法弄清楚如何快速搜索标签和内容。
答案 0 :(得分:4)
在关系数据库中存储[tag,UID]对。每次添加或更新标记时,都会在数据库的此表中添加和更新标记。
当执行包含标记数据(存储在数据库中)和内容(在Lucene中编制索引)的Lucene搜索时,您需要将结果合并在一起。一种方法是:
我们在系统中实施了这种方法,效果很好。出于性能原因,您可能需要在数据库前放置一个缓存。步骤(3)的细节将根据您使用的Lucene版本而有所不同。