我有名字的自定义lucene analyzer
。
我大部分时间都得到了正确的匹配,但我想阻止返回的结果是"不那么接近"匹配。
示例:
查询:Art Inn Hotel Essen
结果之一:Hotel Garni an der Eissporthalle
,得分:7.6011443
我想阻止这个"结果",即使它不是最顶级的,但它仍然是不合适的。这可能吗?
我使用以下匹配器:
public class MyAnalyzer {
@Override
protected TokenStreamComponents createComponents(String fieldName, java.io.Reader reader) {
VERSION = Version.LUCENE_4_9;
final Tokenizer source = new StandardTokenizer(VERSION, reader);
TokenStream result = new StandardFilter(VERSION, source);
result = new LowerCaseFilter(VERSION, result);
result = new ASCIIFoldingFilter(result);
return new TokenStreamComponents(source, result);
}
}
BooleanQuery q = new BooleanQuery();
q.add(new QueryParser(VERSION, "name", new MyAnalyzer()).parse(name), Occur.MUST);
我也想知道:为什么结果会匹配?因为在它们中出现的唯一术语是字符串Hotel
?