在搜索多个字段时,禁用一个字段上的规范是否优于其他字段?

时间:2012-03-07 08:32:12

标签: java lucene scoring

我有许多字段要么只包含一个术语,要么我不希望它们被排除,如果它们有更多的术语,我从不提高字段,所以我禁用这些字段的规范Field.Index.ANALYZED_NO_NORM或Field.Index.NOT_ANALYZED_NO_NORM。

但现在如果我正在使用两个字段

fielda:term1 OR fieldb:term2

并且fielda启用了规范而fieldb没有启用,这并不意味着匹配fieldb的文档比匹配fielda的文档更有可能获得得分,因为匹配fielda的文档的得分最终会降低

中得分
weight = tf * idf * fieldnorm calculation.

因为如果该字段包含多个术语

,则fieldnorm将小于1

这不是我想要的,我只是想在fieldb上匹配一个文档,其中包含三个术语得分以及一个带有一个术语的文档字段匹配

我是否理解这一点,关于fieldnorm的所有讨论都集中在它占用内存这一事实上,如果你的字段只包含一个术语我就不会讨论它是如何影响结果的,这是不必要的明显的优势是禁用规范的领域超出了规范领域。

1 个答案:

答案 0 :(得分:0)

我的建议不是在标准字段上的查询禁用规范的字段上混合查询。禁用规范的目的是在查询仅用作过滤器时节省空间(并且不会对分数做出贡献)。

做你想做的事的优雅方式是你的领域有两种不同的相似之处。但是,此功能(per-field similarity)仅在当前的开发版本中可用。