Sono nuovo in Lucene, io sto cercando di fare una ricerca simile a questaLucene "o query"
content="some thext" and (id ="A" or id="B" or id="c")
sto veramente perso con questo, mi può aiutare
Grazie.
Sono nuovo in Lucene, io sto cercando di fare una ricerca simile a questaLucene "o query"
content="some thext" and (id ="A" or id="B" or id="c")
sto veramente perso con questo, mi può aiutare
Grazie.
credo la sezione "Gruppi" nella Query Parser Syntax documentation fornisce la risposta:
(jakarta OR apache) AND website
Ho il sospetto che si dovrebbe fare gli operatori (and
, or
) maiuscoli. Inoltre, non penso che tu possa usare l'operatore di uguale (usare invece i due punti).
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);
Sembra che' moduleFilter' debba essere cambiato in 'idFilter'. Ad ogni modo +1 per risposta. – RyuuGan
Una spiegazione che ho trovato utile (dai javadoc Occur): per un BooleanQuery senza clausole Occur.MUST, una o più clausole Occur.SHOULD devono corrispondere a un documento per il BooleanQuery da abbinare. – Renaud
BooleanQuery è deprecato ora.
La nuova sintassi è simile a questa. (Dovrebbe == O, deve == e)
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()
Grazie ... è stato un tale successo il vostro aiuto –
si potrebbe semplificare a: 'contenuti: "alcuni thext" e l'ID :("A" O "B" O "c") ' –