Je suis nouveau dans Lucene, je suis en train de faire une chose de recherche comme celui-ciLucene « ou requêtes »
content="some thext" and (id ="A" or id="B" or id="c")
Je suis vraiment perdu avec cela, pourriez-vous me aider
Merci.
Je suis nouveau dans Lucene, je suis en train de faire une chose de recherche comme celui-ciLucene « ou requêtes »
content="some thext" and (id ="A" or id="B" or id="c")
Je suis vraiment perdu avec cela, pourriez-vous me aider
Merci.
je crois que la section "Regroupement" dans le Query Parser Syntax documentation fournit la réponse:
(jakarta OR apache) AND website
Je suppose que vous devez faire vos opérateurs (and
, or
) majuscules. De plus, je ne pense pas que vous pouvez utiliser l'opérateur égal (utilisez deux points à la place).
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);
On dirait que' moduleFilter' devrait être changé en 'idFilter'. De toute façon +1 pour la réponse. – RyuuGan
Une explication que j'ai trouvée utile (à partir des javadocs Occur): Pour une requête BooleanQuery sans Occur.MUST, une ou plusieurs clauses Occur.SHOULD doivent correspondre à un document pour que BooleanQuery corresponde. – Renaud
BooleanQuery est maintenant dépréciée.
La nouvelle syntaxe ressemble à ceci. (Devrait == OU, doit == ET)
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()
Merci ... il a si bien réussi votre aide –
vous pouvez simplifier à: 'contenu: « certains thext » ET id :(« A » OU "B" OU "c") ' –