Я хочу настроить 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();
}