我想在搜索索引之前更改相似性。我要做的是:
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!?
我的问题:
为什么一开始将相似度设置为2.0(我认为默认情况下为0.5)?
为什么在调用setFuzzyMinSim方法后仍为2.0?
最佳答案
FuzzyQuery
在Lucene版本4中已显着更改。“〜”后的数字是最大编辑距离,而不是最小相似度。我不太清楚FuzzyMinSim
如何映射到最大编辑距离,就像StandardQueryParser
生成FuzzyQuery
时一样。请注意,不建议在4.x中使用DefaultFuzzyMinSim。
编辑距离2是默认的最大最大值,并且FuzzyQuery
类不支持大于2的编辑距离,因此标准查询解析器不支持。
关于java - lucene FuzzyQuery中不断变化的相似性,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18317546/