Lucene索引策略经常更改的文档

时间:2011-05-16 00:21:26

标签: java lucene

我正在将搜索功能集成到桌面应用程序中,而我正在使用vanilla Lucene这样做。该应用程序处理(可能有数千个)POJO,每个POJO都有自己的一组键/值属性。在我的应用程序和Lucene之间映射模型时,我最初想到为每个POJO分配一个Document并将属性添加为Fields。这种方法在索引和搜索方面效果很好,但主要缺点是每当POJO更改其属性时,我必须重新索引所有属性,即使是没有更改的属性,以便更新索引。我一直在考虑改变我的方法,而是创建一个Document per property,并为同一个POJO中的所有Documents分配相同的id。这样,当POJO属性发生变化时,我只更新其相应的Document而不重新索引所有其他未更改的属性。我认为图表db Neo4J在索引时遵循类似的方法,但我不完全确定。有人可以评论对性能,查询等可能产生的影响吗?

2 个答案:

答案 0 :(得分:0)

这基本上取决于您希望在搜索结果中作为文档返回的内容。

但索引相当便宜。更改的POJO真的有这么多属性,重新索引它们都是一个主要问题吗?

答案 1 :(得分:0)

如果您只搜索每个搜索请求中的一个字段,将一个POJO拆分为多个文档将加快重建索引。但是如果搜索一个多个字段会导致另一个问题,POJO可能会多次出现。 实际上,我同意EJP,建立索引在小数据集中非常快。