Я новичок в Lucene, я пытаюсь найти что-то вроде этого
content="some thext" and (id ="A" or id="B" or id="c")
Я действительно потерял это, не могли бы вы помочь мне.
Спасибо.
Я новичок в Lucene, я пытаюсь найти что-то вроде этого
content="some thext" and (id ="A" or id="B" or id="c")
Я действительно потерял это, не могли бы вы помочь мне.
Спасибо.
Я считаю, что раздел "Группировка" в Документация синтаксиса запроса Porser дает ответ:
(jakarta OR apache) AND website
Я подозреваю, что вы должны сделать ваш оператор (and
, or
) в верхнем регистре. Кроме того, я не думаю, что вы можете использовать оператор equals (вместо этого используйте двоеточие).
content:"some thext" AND (id:"A" OR id:"B" OR id:"c")
BooleanQuery mainQuery = new BooleanQuery();
TermQuery contentFilter = new TermQuery(new Term("content", "some text"));
mainQuery.add(contentFilter, BooleanClause.Occur.MUST);
BooleanQuery idFilter = new BooleanQuery();
idFilter.setMinimumNumberShouldMatch(1);
idFilter.add(new TermQuery(new Term("id", A)), BooleanClause.Occur.SHOULD);
idFilter.add(new TermQuery(new Term("id", B)), BooleanClause.Occur.SHOULD);
idFilter.add(new TermQuery(new Term("id", C)), BooleanClause.Occur.SHOULD);
mainQuery.Add(idFilter, BooleanClause.Occur.MUST);
Теперь BooleanQuery устарел.
Новый синтаксис выглядит следующим образом. (должен == OR, должен == И)
val searchManager = Search.getSearchManager(cache)
val queryBuilder = searchManager.buildQueryBuilderForClass(classTag[T].runtimeClass).get()
val luceneQuery = queryBuilder.bool()
luceneQuery.should(new TermQuery(new Term("type", "lala"))
luceneQuery.createQuery()