我正在使用lucene索引具有名为“city”的多值文本字段的文档。 每个文档可能具有此字段的多个值,如la,los angeles等。
假设
document d1 contains city = la ; city = los angeles
document d2 contains city = la mirada
document d3 contains city = la quinta
现在,当我搜索' la'时,我更希望获得d1,因为它具有完全匹配,即匹配不具有任何额外条款的匹配。我读过lucene已经更喜欢用DefaultSimilarity.computeNorm
做
return state.getBoost() * ((float) (1.0 / Math.sqrt(numTerms)));
我遇到的问题是,我不确定如何为像城市这样的多值字段计算numTerms。这里d1的numTerms是1还是3? numTerms是每个字段值的所有numTerms的总和吗?
关于如何使文档d1排名高于d2和d3的任何想法?