Componenti e panoramica di Lucene
Note:
Questa funzione è disponibile in NCache Impresa ed Piloti edizioni.
Lucene, come sappiamo, è un motore di ricerca potente ed efficiente che fornisce una vasta gamma di tecniche di ricerca testuale secondo le esigenze dell'utente. Lucene è molto più di qualsiasi altro motore di ricerca testuale in quanto le scelte date all'utente non sono discriminate in alcun modo. Ha algoritmi di ricerca potenti e potenti e supporta un'ampia gamma di query per la ricerca.
Le applicazioni Lucene hanno un ciclo di base che comprende principalmente i primi dati di indicizzazione su cui viene eseguita la ricerca, in un percorso specifico. I dati inseriti possono essere in qualsiasi forma testuale secondo le esigenze dell'utente. I dati vengono indicizzati e tokenizzati, quindi la ricerca viene eseguita su questi token tramite query. Questo è un processo a due vie in quanto include prima l'elaborazione dei dati e quindi la ricerca su di essi.
Il diagramma seguente illustra il flusso di lavoro di base del modello Lucene.
Componenti di Lucene
Per utilizzare Lucene per la ricerca di testo, diamo un'occhiata più da vicino all'API principale utilizzata da Lucene. Si prega di notare che non è una guida completa per Lucene. Tuttavia, ti aiuterà a comprendere l'API Lucene di base e radicale.
Di seguito è riportata l'API di base utilizzata per creare una soluzione basata su Lucene.
directory: È la classe base che definisce dove vengono formati gli indici.
Documento: Contiene i dati da indicizzare.
Analizzatore: Durante l'indicizzazione dei dati, l'analizzatore decide i criteri in base ai quali viene eseguita la tokenizzazione e la ricerca sui dati. Allo stesso modo viene utilizzato durante l'interrogazione dei dati che implica anche la tokenizzazione.
Scrittore di indici: I documenti creati in precedenza vengono passati alla directory utilizzando questa classe. È possibile aprire un indexWriter alla volta.
Lettore indice: Ogni directory in cui vengono creati gli indici può avere lettori aperti su di essa che sono responsabili della lettura dei dati dagli indici.
Ricerca indice: Il ricercatore è responsabile dell'interrogazione dei dati tramite i lettori.
Di seguito è riportata la descrizione dettagliata di queste classi:
elenco
Questa classe è una rappresentazione della posizione in cui sono archiviati gli indici Lucene. È necessario aprire una directory per mantenere gli indici in modo che possano essere eseguite ulteriori operazioni su di essi.
funzionalità di
Un documento è una raccolta di campi. Questi campi contengono dati testuali come valore rispetto a un nome di campo. Il valore sono i dati che si desidera indicizzare e quindi rendere ricercabili in futuro. Con ogni campo, l'utente può specificare se vuole analizzare il valore di quel campo o meno. Il documento è fondamentalmente l'unità di ricerca che verrà restituita quando un campo viene cercato rispetto a a searchterm
.
Analyzer
Analyzer
come discusso in precedenza, ha la responsabilità principale di tokenizzare i dati in blocchi più piccoli secondo il tipo fornito. Fondamentalmente analizza i campi dei documenti in token indicizzabili. Il modo in cui i dati vengono analizzati dall'analizzatore influenza la capacità dell'utente di ricercare i dati. Di seguito sono elencati i quattro analizzatori Lucene di base e più comunemente utilizzati.
Analizzatore di spazi bianchi
Questo analizzatore analizza i dati in base agli spazi bianchi come mostra il nome. Inoltre questo analizzatore mantiene il caso delle parole. Esegue la tokenizzazione dei dati in base al case che contiene principalmente.
Analizzatore standard
Analizza i dati in base alle parole di arresto ed esegue la tokenizzazione sui dati in minuscolo simile al semplice analizzatore. Inoltre, riconosce gli URL e gli indirizzi e-mail e genera i token di conseguenza. A causa di questa funzionalità è più comunemente utilizzato in quanto è considerato l'analizzatore più intelligente.
Analizzatore semplice
Indicizza i dati in minuscolo e li divide in base alle non lettere. Non indicizza URL e caratteri diversi da lettere come simboli o numeri.
Interrompi l'analizzatore
L'analizzatore di stop genera token dai dati in base ai caratteri non alfabetici e alle parole di stop. Le parole di arresto sono le parole che dovrebbero essere ignorate durante l'indicizzazione poiché gli analizzatori le considerano irrilevanti da scansionare. Inoltre, l'analizzatore di stop non indicizza URL e caratteri diversi da lettere come simboli o numeri.
Considera la frase seguente:
Questo è un tutorial per "DistributedLuce" su alachisoft. Com.
Analizzatore di spazi bianchi | Interrompi l'analizzatore | Analizzatore semplice | Analizzatore standard |
---|---|---|---|
La sezione is a lezione per “Lucena distribuita” at alachisoft. Com. |
lezione lucene distribuita alachisoft com |
questo is a lezione per “lucene distribuita” alachisoft com |
lezione lucene distribuita alachisoft.com |
Scrittore di indici
Per aggiungere il documento e indicizzarlo, abbiamo bisogno di un file IndexWriter
. Lo scrittore ha bisogno di:
Una Directory Lucene valida: dove indicizzare il documento
Analizzatore: in modo che lo scrittore analizzi i dati in base ad esso.
Il writer corrisponde all'analizzatore per i dati indicizzati e quindi aggiunge i risultati alla directory per l'archiviazione dei dati. Precisamente, lo scrivente è responsabile di tutte le operazioni di scrittura da eseguire correttamente sui dati per poi archiviarli. C'è una serie di operazioni che possono essere eseguite sullo scrittore e lo scrittore viene eliminato dopo tutte le operazioni.
Lettore di indici
La funzionalità principale di Lucene è quella di cercare i dati aggiunti in precedenza. A questo scopo abbiamo IndexReader
che legge i dati dalla directory. Ad ogni aggiornamento dei documenti il IndexReader
deve essere reinizializzato. Puoi creare un IndexReader
o ottenere un'istanza di IndexReader
dal IndexWriter
. Passi l'istanza della directory al lettore che ha tutti i documenti indicizzati.
Cercatore di indici
IndexSearcher
è inizializzato con l'istanza di
IndexReader
che prende la query dall'utente e cerca i dati di conseguenza. Una query è una classe astratta fornita da Lucene e viene utilizzata per definire l'ambito e il tipo di ricerca da eseguire. Alla ricerca siamo restituiti con TopDocs
che è il risultato della ricerca con la query.
Ora che la query è stata creata, la analizzi utilizzando il file QueryParser
. L'analizzatore viene passato a queryParser che analizza la query in base a tale analizzatore. Inoltre il nome del campo aggiunto nel documento viene passato al ricercatore della query in modo che cerchi i dati di conseguenza.
Un array è mantenuto in topDocs
che è noto come scoreDocs
. ScoreDocs
manterrà i risultati della ricerca sulla base dell'esecuzione della query. Durante l'iterazione su questo array, i dati risultanti possono essere recuperati.
Consigli: Si raccomanda che l'analizzatore utilizzato per la ricerca sia lo stesso con cui i dati sono stati indicizzati in primo luogo.
Vedere anche
Lucena con NCache
Configura gli indici di query Lucene
Ricerca SQL nella cache
Cerca nella cache con LINQ