尽管存在一些差异,但Lucene.Net的所有文档都具有相同的分数

时间:2011-12-15 18:00:47

标签: c# search lucene.net

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

的差异

查询是:     + house:5757 street:“madeup”street:creek * unit: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,但不确定,因为我还没有看到完整的示例

1 个答案:

答案 0 :(得分:1)

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

通配符查询是MultiTermQueries。

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

QueryParser.setMultiTermRewriteMethod