2011-11-28 15 views
5

sto cercando un indice di Lucene e sto costruendo query di ricerca comeCome cercare su più campi in Lucene usando la sintassi delle query?

field1:"hello" AND field2:"world" 

ma mi piacerebbe cercare un valore in ogni campo, così come i valori in campi specifici nella stessa cioè interrogazione

field1:"hello" AND anyField:"world" 

qualcuno può dirmi come posso cercare in tutti i campi indicizzati in questo modo?

risposta

6

Sulla base delle risposte che ho ricevuto per questa domanda: Impact of repeat value across multiple fields in Lucene ...

posso mettere lo stesso termine di ricerca in più campi e quindi creare un "tutto campo", che ho messo tutto in questo modo possibile. creare una query come ...

field1:"hello" AND all:"world" 

Questo sembra funzionare molto bene, evita la necessità di enormi query di ricerca, ea quanto pare l'impatto sulle prestazioni è minimo.

+0

hi puoi postare qualche codice di esempio per la sintassi sopra .... –

2

Le query booleane (OR) con una clausola per ogni campo vengono utilizzate per cercare più campi. Anche lo MultiFieldQueryParser farà lo stesso, ma i campi devono ancora essere enumerati. Non ci sono impliciti campi "tutti"; ma IndexReader.getFieldNames può acquisirli.

+0

Ho creato un campo "tutto" esplicito ... non sembra ideale ma ogni volta che creo un campo aggiungo anche il campo "tutto". Funziona ma sembra un po 'spazzatura. In realtà quello che mi piacerebbe fare è definire più nomi per ogni campo indicizzato, così posso creare categorie o essere in grado di cercare campi usando caratteri jolly nei nomi dei campi, così posso cercare "nome *" per "nome.firstname: bob" – Edd

Problemi correlati