2011-11-28 9 views
5

busco un índice de Lucene y yo estoy construyendo consultas de búsqueda como¿Cómo buscar en múltiples campos en Lucene usando Query Sintax?

field1:"hello" AND field2:"world" 

pero me gustaría buscar un valor en cualquier campo, así como los valores de los campos específicos de la misma, es decir consulta

field1:"hello" AND anyField:"world" 

¿Alguien me puede decir cómo puedo buscar en todos los campos indexados de esta manera?

Respuesta

6

Sobre la base de las respuestas que me dieron para esta pregunta: Impact of repeat value across multiple fields in Lucene ...

puedo poner el mismo término de búsqueda en múltiples campos y por lo tanto crear un "todo" campo que puse todo de esta manera que puedo. crear una consulta como ...

field1:"hello" AND all:"world" 

Esto parece funcionar muy bien, evita la necesidad de enormes consultas de búsqueda, y al parecer el impacto en el rendimiento es mínimo.

+0

hola puedes publicar un código de ejemplo para la sintaxis anterior .... –

2

Las consultas booleanas (OR) con una cláusula para cada campo se utilizan para buscar en múltiples campos. El MultiFieldQueryParser también lo hará, pero los campos aún deben enumerarse. No hay campos "todos" implícitos; pero IndexReader.getFieldNames puede adquirirlos.

+0

He creado un campo "todo" explícito ... no parece ideal, pero cada vez que creo un campo también lo agrego al campo "todos". Funciona, pero parece un poco basura. Realmente, lo que me gustaría hacer es definir múltiples nombres para cada campo indexado, así puedo crear categorías o ser capaz de buscar campos usando caracteres comodín en los nombres de campo para poder buscar "nombre *" para "nombre.primer nombre: bob" – Edd

Cuestiones relacionadas