Ho un po 'di codice utilizzando Lucene che lascia l'operatore di congiunzione predefinito come OR e voglio cambiarlo in AND. Alcuni codici usano solo un semplice QueryParser, e va bene - posso semplicemente chiamare setDefaultOperator su quelle istanze.Come modificare la congiunzione predefinita con Lucene MultiFieldQueryParser
Sfortunatamente, in un punto il codice utilizza un MultiFieldQueryParser e chiama il metodo statico "parse" (prendendo String, String [], BooleanClause.Occur [], Analyzer), quindi sembra che setDefaultOperator non possa aiutare, perché è un metodo di istanza.
C'è un modo per continuare a utilizzare lo stesso parser ma è stata modificata la congiunzione predefinita?
Va bene, grazie. Il passaggio mancante era come configurare i valori di occorrenza in seguito. Un altro approccio con cui sto giocando è che il codice per MultiFieldQueryParser.parse è piccolo, quindi potrei semplicemente inserirlo nella mia applicazione e modificarlo. Crea istanze di QueryParser stesso, quindi posso semplicemente modificarlo per impostare su di esse l'operatore predefinito. –
All'interno del ciclo for iterato, è anche possibile utilizzare quanto segue per modificare la congiunzione per campo: parser QueryParser = new QueryParser (Version.YOUR_VERSION, campi [i], nuovo YourAnalyzer()); parser.setDefaultOperator (QueryParser.Operator.AND); clause.setQuery (parser.parse (clause.getQuery(). ToString (fields [i]))); – Ina