2010-04-06 18 views
5

Sto cercando di eseguire una corrispondenza sfocata sulla frase "Grand Prarie" (intenzionalmente errata) utilizzando Apache Lucene. Parte del mio problema è che l'operatore ~ esegue solo corrispondenze sfocate in termini di parole singole e si comporta come una corrispondenza di prossimità per le frasi.Lucene Fuzzy Match on Phrase invece di Single Word

C'è un modo per fare una partita fuzzy su una frase con lucene?

risposta

2

Non esiste un supporto diretto per una frase fuzzy, ma è possibile simularlo esplicitamente con enumerating the fuzzy terms e aggiungerli a MultiPhraseQuery. La query risultante sarà simile:

<MultiPhraseQuery: "grand (prarie prairie)"> 
+0

+1. La strada da percorrere – Yaroslav

+2

Potresti approfondire un po 'questo argomento? Non sto usando Lucene direttamente, ma piuttosto attraverso Solr. Potrei benissimo andare a leggere Lucene in azione. Non mi dispiacerebbe avere una migliore comprensione di come i due lavorano insieme e si stanno familiarizzando con esso a un livello più fondamentale. Per ora, in Solr, sto raggiungendo qualcosa che è abbastanza efficace per me usando l'analizzatore solr.PhoneticFilterFactory. – Koobz

1

È venuto attraverso questo attraverso Google e sentito soluzioni dove non quello che cercavo. Nel mio caso, la soluzione era semplicemente ripetere la sequenza di ricerca contro l'API solr. Così, per esempio, se ero alla ricerca di: title_t per includere partita "dog ~" e "gatto ~", ho aggiunto un po 'di codice manuale per generare query come:

((title_t:dog~) and (title_t:cat~)) 

Potrebbe essere solo quello di cui sopra query sono circa, tuttavia i collegamenti sembrano morti.

+0

Questo è quello che mi serviva :) grazie – Oyeme

Problemi correlati