12
votes

Lucene "ou requêtes"

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")


0 commentaires

3 Réponses :



24
votes
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);

2 commentaires

On dirait que modulefilter doit être remplacé par idfilter . 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.



-1
votes

BooleanQuery est désigné maintenant.

Une nouvelle syntaxe ressemble à ceci. (devrait == ou, doit == et) xxx


0 commentaires