1

我知道网络上以及 SO 上有几个关于 Lucene 中的索引和查询性能的主题,但我还没有找到一个讨论创建有效负载是否(如果是,多少?)会影响查询表现...

这是场景...

假设我想索引一组文档(从 100K 到 10M),并且每个文档都有一个我希望能够单独搜索的子部分(或者可能排名更高,取决于是否在该部分中找到匹配项) .

我正在考虑向该小节中出现的任何术语添加有效负载(在索引期间),因此我可以在查询时有效地做出决定。

有谁知道与使用有效负载相关的任何性能问题,甚至更好,您能否指出有关此主题的任何在线文档?

谢谢!

编辑:我很欣赏我的场景的替代解决方案,但如果我将来确实需要使用有效负载,是否有人对关于查询性能的原始问题有任何评论?

4

2 回答 2

1

您想要做的教科书解决方案是将每个原始文档索引为两个字段:一个用于完整文档,另一个用于小节。您可以在索引期间或检索期间单独提升 subsection 字段。话虽如此,您可以在此处阅读有关 Lucene 有效负载的信息:有效负载入门

于 2009-09-16T06:32:48.827 回答
0

您的用例与有效载荷的目的不符——在我看来,任何有效载荷信息都是多余的。

有效负载附加到文档中各个出现的术语,而不是文档/术语对。为了存储和访问有效负载,您必须使用文档中术语出现的偏移量。在您的情况下,如果您知道偏移量,您应该能够计算出术语出现在哪个部分,而无需使用有效负载数据。

更广泛的问题是有效载荷对性能的影响。我的经验是,如果使用得当,payload 实现占用的空间更少,而且比我以前使用的任何解决方法都更快。对磁盘空间的最大影响将是您当前使用 Field.setOmitTermFreqAndPositions(true) 来减小索引大小的任何位置。您将需要包含位置以使用有效负载,这可能会使索引更大。

于 2010-12-17T12:36:17.643 回答