Lucene多值字段和numTerms

Lucene多值字段和numTerms,lucene,Lucene,我正在使用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为具有名为“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一样

returnstate.getBoost()*((float)(1.0/Math.sqrt(numTerms))

我的问题是,我不确定如何为多值字段(如city)计算numTerms。d1的numterm是1还是3?numTerms是每个字段值的所有numTerms的总和吗


关于如何使文档d1的排名高于d2和d3,您有什么想法吗?

类似的问题回答:@mindas没有,您所指的问题虽然听起来类似,但与多值字段以及如何计算numTerms无关。