Lucene助推器接近查询

时间:2013-05-30 20:37:32

标签: lucene proximity

索引我的文档时,我提升了部分文档(使用 doc.setBoost)。

使用邻近查询时,一切正常:

“您的邻近查询”~30

不会考虑提升因素。

邻近查询不支持提升吗?

下面的查询解释输出:“女人”〜30

所有结果输出如下:

0.0 = (NON-MATCH) weight(/d:"woman the"~30 in 342), product of:
  1.0 = queryWeight(/d:"woman the"~30), product of:
    2.0 = idf(/d: woman=82 the=12031)
    0.5 = queryNorm
  0.0 = fieldWeight(/d:"woman the" in 342), product of:
    0.0 = tf(phraseFreq=0.33333334)
    2.0 = idf(/d: woman=82 the=12031)
    3.0 = fieldNorm(field=/d, doc=342)

任何帮助都会非常感激。

THX,我

2 个答案:

答案 0 :(得分:0)

最新版本的Lucene不支持

Document.setBoost。在旧版本中,它实际上做了多少,将设置文档提升增加到每个文档字段提升中。实际上,没有任何文档提升这样的东西,这只是设置一堆字段提升的便捷方法。

字段提升(和文档提升)与LengthNorm因子结合在一起,并被压缩(有损)并存储在索引中(请参阅Similarity.computeNorm)。这是您看到的fieldNorm值。当您从索引中检索Document时,为文档级别提升设置的原始值已经通过这些计算步骤丢失,并且无法检索。

答案 1 :(得分:0)

为什么不在查询时提升?优点是您可以调整邻近度和提升设置,而无需担心重新索引文档:

“您的邻近查询”~30 ^ 10

或者

myField:“您的邻近查询”~30 ^ 10

希望这有帮助。