Zend: generazione indice e i pro ei contro di Zend_Search_Lucene
-
19-09-2019 - |
Domanda
Non ho mai incontrato un app / classe come Zend Search Lucene prima, come ho sempre interrogato il mio database.
Zend_Search_Lucene opera con documenti come oggetti atomici per indicizzazione. Un documento è diviso in campi denominati e campi hanno contenuti che possono essere cercati.
Un documento è rappresentato dal Classe Zend_Search_Lucene_Document, e questi oggetti di questa classe contengono istanze di Zend_Search_Lucene_Field che rappresentano i campi della documento.
E 'importante notare che qualsiasi informazioni possono essere aggiunto all'indice. informazioni specifiche dell'applicazione o metadati possono essere memorizzate nel documento campi, e poi recuperati con la documento durante la ricerca.
Quindi questo è fondamentalmente dicendo che posso applicare questo alle banche dati tra cui nulla, la cosa chiave qui è fare gli indici per la ricerca.
Quello che sto cercando di afferrare è esattamente dove devo conservare gli indici a mia domanda, prendiamo per esempio abbiamo i telefoni memorizzati in un database, a produttori, i modelli -? Come devo classificare gli indici
Se sto facendo indici di utenti con diciamo, indirizzi io, ovviamente, non vorrei che loro di essere pubblicamente visibili, io sono solo confuso su come funziona il tutto insieme, se vi sono noti svantaggi, dei trucchi dovrei conoscere durante l'utilizzo.
Soluzione
Un indice Lucene è memorizzato all'esterno del database. Mi piacerebbe conservarlo in una directory "data" come una sorella per i controller, modelli e punti di vista. Ma è possibile memorizzare ovunque; è sufficiente specificare il percorso quando si apre l'indice per l'interrogazione.
E 'fondamentalmente una copia ridondante dei documenti memorizzati nel database, e devi tenerli in sincronia te stesso. Questo è uno degli svantaggi: si deve scrivere il codice per popolare l'indice Lucene sulla base dei risultati di una query sul database. Quando si aggiungono dati al database, è necessario aggiornare l'indice di Lucene pure.
Un vantaggio di utilizzare una soluzione indice full-text esterno è che è possibile ridurre il carico di lavoro sul vostro RDBMS. Per trovare un documento, si esegue una ricerca utilizzando l'API Lucene. Il risultato dovrebbe includere un campo che contiene il valore della chiave primaria (come parte del documento, ma non c'è bisogno di rendere analizzato per FT di ricerca). Si ottiene questo campo indietro quando si esegue una ricerca Lucene, in modo da poter cercare la rispettiva riga nel database.
Non che aiutano a rispondere alla tua domanda?
Ho dato una presentazione di recente per MySQL Università a confronto soluzioni di ricerca full-text: http://forge.mysql.com/wiki/Practical_Full-Text_Search_in_MySQL
Ho anche pubblicare le mie diapositive a http://www.SlideShare.net/billkarwin .