在lucene FuzzyQuery中改变相似性

时间:2013-08-19 15:28:09

标签: java lucene fuzzy-search

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

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?

1 个答案:

答案 0 :(得分:4)

在Lucene版本4中,

FuzzyQuery已经发生了重大变化。“〜”之后的数字是最大编辑距离,而不是最小相似度。我并不清楚FuzzyMinSim如何映射到最大编辑距离,就像StandardQueryParser生成FuzzyQuery时一样。请注意,不推荐在4.x中使用DefaultFuzzyMinSim

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