Domanda

Alla ricerca di consigli sulla gestione di e commerciali e la parola "quot" e "quot" nelle domande di Lucene. Le mie domande di prova sono (comprese le virgolette):

  • "giacimento di petrolio e gas" (frase completa)
  • " ricerca e sviluppo " (frase completa)
  • " R & amp; S " (frase completa)

Idealmente, vorrei usare QueryParser poiché l'input proviene dall'utente.

Durante i test e la lettura dei documenti, ho scoperto che l'uso del StandardAnalyzer non funziona per quello che voglio. Per le prime due query, un QueryParser.Parse le converte in:

contents:"oil gas field"
contents:"research development"

Che non è quello che voglio. Se invece utilizzo un PhraseQuery , non ottengo risultati (presumibilmente perché " e " non sono indicizzati.

Se uso un SimpleAnalyzer , allora posso trovare le frasi ma QueryParser.Parse converte l'ultimo termine in:

contents:"r d"

Che di nuovo, non è proprio quello che sto cercando.

Qualche consiglio?

È stato utile?

Soluzione

se vuoi cercare " e " devi indicizzarlo. Scrivi il tuo analizzatore o rimuovi " e " dall'elenco delle parole di arresto. Lo stesso vale per il "r & amp; d". Scrivi il tuo analizzatore che crea 3 parole dal testo: " r " ;, " d " ;, " r & amp; d " ;.

Altri suggerimenti

Il primo passo nel lavorare con Lucene è accettare che praticamente tutto il lavoro sia svolto al momento dell'indicizzazione. Se vuoi cercare qualcosa, allora lo indicizzi. Se vuoi ignorare qualcosa, non indicizzarla. È questo che consente a Lucene di fornire ricerche così veloci.

Il risultato è che, affinché un indice funzioni in modo efficace, devi anticipare ciò che il tuo analizzatore deve fare in anticipo. In questo caso, scriverei il mio analizzatore che non spoglia alcuna parola di stop e trasforma anche & amp; a "e" (e facoltativamente da @ a "a" ecc.). Nel caso della ricerca di corrispondenza & ricerca; sviluppo che quasi sicuramente dovrai implementare una logica specifica di dominio.

Esistono altri modi per gestirlo. Se è possibile distinguere tra ricerche di frasi e ricerche di parole chiave normali, non vi è alcun motivo per cui non è possibile mantenere due o più indici per gestire diversi tipi di ricerca. Ciò consente una ricerca molto rapida ma richiederà un po 'più di manutenzione.

Un'altra opzione è utilizzare l'alta velocità di Lucene per filtrare i risultati iniziali fino a qualcosa di più gestibile utilizzando un analizzatore che non dia falsi negativi. Puoi quindi eseguire alcuni filtri dettagliati sul testo completo di quei documenti che trova per abbinare le frasi corrette.

Alla fine penso che scoprirai che Lucene sacrifica l'accuratezza nelle ricerche più avanzate al fine di fornire velocità, in genere è abbastanza buono per la maggior parte delle persone. Probabilmente ti trovi in ??acque inesplorate, provando a modificare così tanto il tuo analizzatore.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top