Tengo un código usando Lucene que deja el operador de conjunción predeterminado como OR, y quiero cambiarlo a Y. Parte del código solo usa un QueryParser simple, y eso está bien, solo puedo llamar a setDefaultOperator en esas instancias.Cómo cambiar la conjunción predeterminada con Lucene MultiFieldQueryParser
Desafortunadamente, en un lugar el código usa un MultiFieldQueryParser, y llama al método estático "parse" (tomando String, String [], BooleanClause.Occur [], Analyzer), por lo que parece que setDefaultOperator no puede ayudar, porque es un método de instancia.
¿Hay alguna manera de seguir usando el mismo analizador pero cambiar la conjunción predeterminada?
Eso es bueno gracias. El paso que faltaba era cómo configurar los valores de Occur después. Otro enfoque con el que estoy jugando es que el código de MultiFieldQueryParser.parse es pequeño, así que podría pegarlo en mi aplicación y modificarlo. Crea instancias de QueryParser, así que puedo modificarlo para configurar el operador predeterminado en ellas. –
Dentro del ciclo for iterated, también puede usar lo siguiente para cambiar la conjunción por campo: QueryParser parser = new QueryParser (Version.YOUR_VERSION, fields [i], new YourAnalyzer()); parser.setDefaultOperator (QueryParser.Operator.AND); clause.setQuery (parser.parse (clause.getQuery(). ToString (fields [i]))); – Ina