我想自定义SimpleQueryParser,以便搜索中非MUST_NOT(带有-前缀)的术语也被查询为前缀和模糊。
因此,用户通常不知道要搜索哪些术语(因此模糊和前缀很有用),但他们知道自己不想要的术语。
我按照下面的代码进行操作,但是我发现如何对MUST_NOT文本进行特殊处理。
@Override
protected Query newDefaultQuery(String text) {
Query query = super.newDefaultQuery(text);
BooleanQuery.Builder mustBool = new BooleanQuery.Builder()
.add(new BoostQuery(query, 1.5F), BooleanClause.Occur.SHOULD)
.add(new BoostQuery(newPrefixQuery(text), 1.2F), BooleanClause.Occur.SHOULD)
.add(new BoostQuery(super.newFuzzyQuery(text, 2), 1.1F), BooleanClause.Occur.SHOULD);
mustBool.setMinimumNumberShouldMatch(1);
return mustBool.build();
}