Lucene.Net文档虽然有一些差异,但得分相同

本文关键字:文档 Net Lucene | 更新日期: 2023-09-27 18:17:54

我在Lucene.net上运行一些查询,它返回几个文档只有unit属性

不同

查询为:+house:5757 street:"madeup" street:creek*单位:114*余数:66103*余数:"114 Miami fl 66103"

,我得到了几个文档

house:5757 street:"madeup" street:creek unit:100 remainder:"100 miami fl 66103"
house:5757 street:"madeup" street:creek unit:101 remainder:"101 miami fl 66103"
house:5757 street:"madeup" street:creek unit:102 remainder:"102 miami fl 66103"
...
house:5757 street:"madeup" street:creek unit:114 remainder:"114 miami fl 66103"
...
...
house:5757 street:"madeup" street:creek unit:200 remainder:"200 miami fl 66103"

我正在用

检索记录
var collector = TopScoreDocCollector.create(25, true);
searcher.Search(topQuery, collector);

问题的部分是所有这些文档都有完全相同的分数5.09505,所以单位匹配并没有真正对文档分数产生任何影响

当文档被索引时,这就是我索引unit字段的方式:

doc.Add(new Field("unit", unitValue, Field.Store.YES, Field.Index.NOT_ANALYZED));

编辑一些谷歌显示,RewriteMethod需要改变,但不确定,因为我还没有看到一个完整的例子

Lucene.Net文档虽然有一些差异,但得分相同

您的搜索中有一些通配符。在Lucene中,通配符查询的命中将默认返回常数分数。

通配符查询是MultiTermQueries。

尝试在QueryParser上为MultiTermQuery重写方法设置一个不同的值,看看是否会得到不同的结果:

QueryParser.setMultiTermRewriteMethod