Lucene "Или запросы" Я новичок в Lucene, я пытаюсь найти что-то вроде этого content="some thext" and (id ="A" or id="B" or id="c") Я действительно потерял это, не могли бы вы помочь мне. Спасибо. Ответ 1 Я считаю, что раздел "Группировка" в Документация синтаксиса запроса Porser дает ответ: (jakarta OR apache) AND website Я подозреваю, что вы должны сделать ваш оператор (and, or) в верхнем регистре. Кроме того, я не думаю, что вы можете использовать оператор equals (вместо этого используйте двоеточие). content:"some thext" AND (id:"A" OR id:"B" OR id:"c") Ответ 2 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); Ответ 3 Теперь 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()
Ответ 1 Я считаю, что раздел "Группировка" в Документация синтаксиса запроса Porser дает ответ: (jakarta OR apache) AND website Я подозреваю, что вы должны сделать ваш оператор (and, or) в верхнем регистре. Кроме того, я не думаю, что вы можете использовать оператор equals (вместо этого используйте двоеточие). content:"some thext" AND (id:"A" OR id:"B" OR id:"c")
Ответ 2 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);
Ответ 3 Теперь 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()