2010-10-06 11 views
20

Appena iniziato con Lucene.Net. Ho indicizzato 100.000 righe utilizzando l'analizzatore standard, ho eseguito alcune query di test e ho notato che le query plurali non restituiscono risultati se il termine originale era singolare. Comprendo che l'analizzatore di palle di neve aggiunge il supporto per la derivazione, che suona bene. Tuttavia, mi chiedo se ci sono degli svantaggi nel gong con palle di neve oltre gli standard? Sto perdendo qualcosa andando con esso? Ci sono altri analizzatori là fuori da considerare?Lucene Standard Analyzer vs Snowball

+0

Se si utilizza l'analizzatore a palle di neve, si dovrebbero ottenere risultati per singolare/plurale, perché la palla di neve normalizzerà nella stessa forma. Sei sicuro di utilizzare lo stesso analizzatore per creare un indice e interrogarlo? – Skarab

risposta

18

Sì, utilizzando uno stemmer come Snowball, si perdono informazioni sulla forma originale del testo. A volte questo sarà utile, a volte no.

Ad esempio, Snowball sgancia "organizzazione" in "organo", quindi una ricerca di "organizzazione" restituirà risultati con "organo", senza alcuna penalità di punteggio.

Se questo è appropriato o meno dipende dal contenuto e dal tipo di query supportate (ad esempio, le ricerche sono molto semplici o gli utenti sono molto sofisticati e utilizzano la ricerca per filtrare in modo accurato il risultati). Potresti anche voler esaminare gli stemmer meno aggressivi, ad esempio KStem.

+0

Ho appena capito che puoi anche fare una ricerca fuzzy come questo "canguro ~" che restituirà anche versioni singolari della parola, anche se sembra che impieghi un po 'più tempo per elaborare la query. – alchemical

+0

@alchemical: mi raccomando davvero di non farlo. ~ è un operatore molto lento, e se il tuo utente fa qualcosa come cercare una frase sei un po 'fregato. Perché è così grave se i "canguri" vengono memorizzati come "canguro"? – Xodarap

+0

OK, questo è bello sapere - per usare KStem hai bisogno di Solr? Hai bisogno di lavorare con il codice sorgente di Lucene per integrarlo? – alchemical

4

Ho appena finito un analizzatore che esegue la lemmatizzazione. È simile alla derivazione, tranne che utilizza il contesto per determinare il tipo di una parola (nome, verbo, ecc.) E usa quell'informazione per ricavare la radice. Mantiene anche la forma originale della parola nell'indice. Forse my library può esserti utile. Richiede Lucene Java, però, e non sono a conoscenza di alcun lemmatizzatore C# /. NET.

6

L'analizzatore snowball aumenterà il vostro richiamo, perché è molto più aggressivo rispetto all'analizzatore standard. Quindi è necessario valutare i risultati della ricerca per vedere se per i dati è necessario aumentare recall or precision.