Frage

Ich bin noch nie auf eine App/Klasse wie Zend Search Lucene gestoßen, da ich meine Datenbank immer abgefragt habe.

Zend_search_lucene arbeitet mit Dokumenten als Atomobjekte für die Indexierung. Ein Dokument ist in benannte Felder unterteilt, und Felder haben Inhalte, die durchsucht werden können.

Ein Dokument wird von der Klasse Zend_Search_Lucene_Document dargestellt, und diese Objekte dieser Klasse enthalten Instanzen von Zend_Search_Lucene_Field, die die Felder im Dokument darstellen.

Es ist wichtig zu beachten, dass Informationen zum Index hinzugefügt werden können. Anwendungsspezifische Informationen oder Metadaten können in den Dokumentfeldern gespeichert und später während der Suche mit dem Dokument abgerufen werden.

Dies heißt im Grunde genommen, dass ich dies auf alles anwenden kann, einschließlich Datenbanken. Das Wichtigste ist, dass die Suche Indizes für die Suche erstellt.

Was ich zu verstehen versuche, ist, wo genau ich die Indizes in meiner Anwendung speichern soll. Nehmen wir zum Beispiel. Wir haben Telefone in einer Datenbank, einem Hersteller, Modellen gespeichert - wie sollte ich die Indizes kategorisieren?

Wenn ich Nutzerindizes mit sagen: Adressen, ich möchte offensichtlich nicht, dass sie öffentlich angezeigt werden, bin ich nur verwirrt darüber, wie es zusammen funktioniert. Wenn es nunte Nachteile gibt, sollte Gotchas, die ich während der Verwendung wissen sollte es.

War es hilfreich?

Lösung

Ein Lucene -Index wird außerhalb der Datenbank gespeichert. Ich würde es in einem "Daten" -Verzeichnis als Schwester in Ihren Controllern, Modellen und Ansichten speichern. Aber Sie können es überall aufbewahren; Sie müssen nur den Pfad angeben, wenn Sie den Index für die Abfrage öffnen.

Es handelt sich im Grunde genommen um eine redundante Kopie der in Ihrer Datenbank gespeicherten Dokumente, und Sie müssen sie selbst synchronisieren. Dies ist einer der Nachteile: Sie müssen Code schreiben, um den Lucene -Index basierend auf den Ergebnissen einer Abfrage gegen Ihre Datenbank zu füllen. Wenn Sie der Datenbank Daten hinzufügen, müssen Sie auch Ihren Lucene -Index aktualisieren.

Ein Vorteil der Verwendung einer externen Volltextindexlösung besteht darin, dass Sie die Arbeitsbelastung auf Ihrem RDBMS reduzieren können. Um ein Dokument zu finden, führen Sie eine Suche mit der Lucene -API aus. Das Ergebnis sollte ein Feld enthalten, das den Primärschlüsselwert enthält (als Teil des Dokuments, aber es ist jedoch nicht erforderlich, es für die FT -Suche zu analysieren). Sie erhalten dieses Feld wieder, wenn Sie eine Lucene -Suche durchführen, damit Sie die jeweilige Zeile in der Datenbank nachschlagen können.

Beantwortet das Ihre Frage?

Ich habe kürzlich eine Präsentation für die MySQL University abgegeben, um Volltext-Suchlösungen zu vergleichen:http://forge.mysql.com/wiki/practical_full-text_search_in_mysql

Ich veröffentliche auch meine Folien bei http://www.slideshare.net/billkarwin.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top