Je suis nouveau à Lucene, j'essaie de faire une recherche de quelque chose comme ça
content="some thext" and (id ="A" or id="B" or id="c")
3 Réponses :
Je crois que la section "regroupement" du Documentation de la syntaxe d'analyseur de requête a > Fournit la réponse: Je soupçonne que vous devriez rendre vos opérateurs ( et code>,
ou code>) majuscule. De plus, je ne pense pas que vous puissiez utiliser l'opérateur égal (utilisez plutôt un colon). P>
content:"some thext" AND (id:"A" OR id:"B" OR id:"c")
Merci ... c'était tellement réussi votre aide
Vous pouvez le simplifier à: Contenu: "Quelques therex" et ID :( "A" ou "B" ou "C") CODE>
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 code> doit être remplacé par
idfilter code>. Quoi qu'il en soit +1 pour répondre.
Une explication que j'ai trouvée utile (à partir de la survie Javadocs): Pour une BooleanQuery sans se produire. Des clauses, une ou plusieurs surviennent. Les clauses doivent correspondre à un document pour correspondre à la BoolQuery.
BooleanQuery est désigné maintenant.
Une nouvelle syntaxe ressemble à ceci. (devrait == ou, doit == et) p>