2

我想在搜索索引之前更改相似度。我要做的是:

QueryParser parser = new QueryParser(Version.LUCENE_43, "field", standarAnalyzer);
System.out.println("similarity before: " + parser.getFuzzyMinSim());
parser.setFuzzyMinSim(0.6f);
System.out.println("similarity after: " + parser.getFuzzyMinSim());
Query query = parser.parse(inputString); // inputString is given by the user
System.out.println("Querystring: " + query.toString());

现在,当 inputString = "something~" 然后我得到这个输出

similarity before: 2.0
similarity after: 0.5
Querystring: field:something~2 // Why 2!?

我的问题:

  1. 为什么一开始就设置相似度为2.0(我以为默认是0.5)?
  2. 为什么调用 setFuzzyMinSim 方法后还是 2.0?
4

1 回答 1

4

FuzzyQuery在 Lucene 版本 4 中发生了显着变化。“~”后面的数字是最大编辑距离,而不是最小相似度。我不太清楚如何FuzzyMinSim映射到最大编辑距离,就像StandardQueryParser生成FuzzyQuery. 请注意,不推荐在 4.x中使用DefaultFuzzyMinSim 。

编辑距离为 2 是默认最大值,该类不支持大于 2 的编辑距离FuzzyQuery,因此标准查询解析器也不支持。

于 2013-08-19T16:17:58.293 回答