2010-03-26 7 views
8

Quando uso Luke per cercare il mio indice Lucene utilizzando un analizzatore standard, posso vedere il campo I am search per contiene valori del modulo MY_VALUE. Quando cerco il campo: "MY_VALUE", tuttavia, la query viene analizzata come campo: "il mio valore"Lucene ricerca e trattini bassi

Esiste un modo semplice per sfuggire al carattere di sottolineatura (_) in modo che venga cercato?

EDIT:

4/1/2010 11:08 PM PDT

Penso che ci sia un bug nel tokenizzatore per Lucene 2.9.1 e fu probabilmente lì prima. Caricare fino Luca e provare a cercare "BB_HHH_FFFF5_SSSS", quando v'è un numero, i seguenti token vengono restituiti:

"bb hhh_ffff5_ssss"

Dopo qualche test, ho trovato che questo è causa di il numero. Se io ingresso

"BB_HHH_FFFF_SSSS", ottengo

"bb HHH ffff ssss"

A questo punto, sto appoggiato verso un bug tokenizzatore a meno che non si suppone la presenza del numero di avere questo comportamento ma non riesco a capire perché.

Qualcuno può confermarlo?

risposta

1

Non sembra che tu abbia usato StandardAnalyzer per indicizzare quel campo. In Luca dovrai selezionare l'analizzatore che hai usato per indicizzare quel campo per far corrispondere correttamente MY_VALUE.

Per inciso, potresti essere in grado di abbinare MY_VALUE utilizzando KeywordAnalyzer.

+0

No, ho usato l'analizzatore standard come l'indicizzatore che è il motivo per cui questo è strano. – Matt

+3

Se si esegue l'indicizzazione con lo Standard Analyzer, l'indice conterrà "my" e "value" come due token diversi. Prova a cercare "il mio valore" (comprese le virgolette) e potresti ottenere risultati. – Thomas

+0

Vorrei ricontrollare quale analizzatore stai usando per l'indicizzazione. Se hai utilizzato StandardAnalyzer per l'indicizzazione, è impossibile avere MY_VALUE come termine, poiché StandardAnalyzer si divide sempre in caratteri di sottolineatura. – bajafresh4life

1

Non credo che sarete in grado di utilizzare l'analizzatore standard per questo caso d'uso.

Giudicare cosa sono i i vostri requisiti, l'analizzatore di parole chiave dovrebbe funzionare bene per poco sforzo (l'intero campo diventa un unico termine).

Penso che parte della confusione sorga quando si guarda il campo con luke. Il valore memorizzato è non ciò che viene utilizzato dalle query, quello che ti serve sono i termini. Sospetto che quando guardi i termini memorizzati per il tuo campo, saranno "il mio" e "valore".

Spero che questo aiuti,