2009-12-21 11 views
9

sto usando Porter Stemmer per arginare le parole, e qui è un problema che sto funzionando in:Zend Lucene problema con la parola "mutuo"

parola "mutuo" sia correttamente derivava a "mortgag" Word "ipotecario" è (discutibilmente in modo non corretto) derivava da "mutuo"

ci sono circa 100 documenti con la parola "mutuo" C'è 1 documento con la parola "ipotecario"

Quando costruisco un indice senza mettere " mutuo "in qualsiasi documento, tutto funziona bene: alla ricerca di" mutui "o" mutui "o" mor tgag "restituisce tutti i 100 documenti.

Quando costruisco un indice e uno dei documenti contiene "ipoteca", la ricerca dell'indice per "mutuo" restituisce solo un singolo documento con "ipoteca" (che è stato ridotto a "mutuo"). Tuttavia, la ricerca di "ipoteche" o "ipoteche" restituisce tutti i 100 documenti.

L'unica conclusione logica che posso ricavare da questo problema è la prima ricerca di Lucene per la parola pre-derivata, e se non trova alcun risultato, continua a cercare la parola derivata. Pertanto, durante la ricerca di un "mutuo", trova innanzitutto il "mutuo" derivato da "ipoteca" e smette di cercare. È questo il comportamento corretto, o è un bug?

risposta

1

Questo suona come un insetto per me. Un principio guida della ricerca di Lucene dice: "Cerca usando lo stesso analizzatore che hai usato per l'indicizzazione, a meno che tu non abbia una vera buona ragione per non farlo". Dopo l'analisi e la derivazione, Lucene dovrebbe restituire le corrispondenze per i termini di ricerca che ha.

Nel tuo caso, "mutuo" è stato trasformato in "ipoteca" durante l'indicizzazione. Il processo di recupero dovrebbe rispecchiare questo, e anche trasformare "ipoteca" in "ipoteca", e quindi trovare le corrispondenze per "ipoteca" (che rappresentano "ipoteca").

Sembra che durante il recupero non si argini la query, che porta a risultati errati. Se questa risposta non è chiara, si prega di modificare la domanda e aggiungere alcune righe di codice che descrivono come si crea l'indice e come lo si cerca.