5

Esta pregunta es un spin-off de la pregunta this. Mi consulta es doble, pero debido a que ambas están relacionadas, creo que es una buena idea juntarlas.¿Cómo crear cadenas de consulta Lucene más complejas?

  • Cómo crear consultas mediante programación. Sé que podría comenzar a crear cadenas y analizar esa cadena con el analizador de consultas. Pero a medida que reúno partes de información de otros recursos, hay una manera programática de hacerlo.
  • ¿Cuáles son las reglas de sintaxis para las consultas de Lucene?

--EDIT--

Voy a dar un ejemplo requisito para una consulta me gustaría hacer:
decir que tengo 5 campos:

  1. Nombre
  2. Apellido
  3. Edad
  4. Dirección
  5. Todo

Todos los campos son opcionales, el último campo debe buscar en todos los demás campos. Repaso todos los campos y veo si es IsNullOrEmpty(). Si no es así, me gustaría adjuntar una parte de mi consulta para que agregue la parte de búsqueda relevante.
El nombre y el apellido deben coincidir exactamente y tienen más peso que los otros campos. La edad es una cadena y debe coincidir exactamente. La dirección puede variar en orden. Todo también puede variar en orden.

¿Cómo debo hacer esto?

Respuesta

6

Utilice la clase BooleanQuery para componer objetos de consulta. Crear uno de estos y añadir() otra Objetos de la consulta a la misma para crear una consulta disyuntiva más grande:

  • BooleanQuery q = new BooleanQuery();
  • q.add (qFirstName, Occur.SHOULD);
  • q.add (qLastName, Occur.SHOULD);
  • ...

consultas atómicos se pueden construir con las clases plazo y TermQuery.

(Los enlaces y ejemplos son para Lucene Java, pero .NET debe ser similar.)

Cuestiones relacionadas