Social Software powered by Instant Communities
Springe direkt: zur Navigationzum Inhaltzur Sidebar

Archiv für 'Lucene'

Zend_Search_Lucene und Symfony - Teil 2

27.07.2007

Die Daten, die in unserem Anwendungsfall indexiert werden, sind Daten, die für grundsätzliche Zwecke innerhalb der Applikation in einer Datenbank gehalten werden, z. B. der Vor- und Nachname eines Nutzers.

Das inkrementelle Aufbauen bzw. Updating des Indexes hat den Vorteil, dass die Datenbank und der Index nicht durch umfangreiche Reindexing-Prozesse zu bestimmten Zeiten zwecks Aktualisierung belastet werden. Zu indexierende Daten werden, wie im ersten Teil erwähnt, in einer Queue, eine Tabelle in der Datenbank, geparkt und von einem Batch-Script in regelmäßigen kurzen Abständen weiterverarbeitet. Somit sind lediglich kleine Datenmengen zu lesen und zu schreiben. Der Prozess ist also folgender:

  1. Daten in die Queue schreiben.
  2. Queue auslesen.
  3. Lucene document mit ausgelesenen Daten erstellen.
  4. Anhand einer definierten ID prüfen, ob document für ausgelesene Daten bereits existiert.
  5. Document ggf. aus dem Index entfernen (bzw. als deletable markieren).
  6. Document dem Index hinzufügen.
  7. Ausgelesene Daten aus der Queue entfernen.

Zusätzlich wird der Index in regelmäßigen Intervallen optimiert (siehe auch Teil 1).

Die Queue wird mit einer Tabelle in der Datenbank realisiert. Die Daten in der Queue bestehen lediglich aus serialisierten Objekten; deren Attribute werden letztendlich indexiert. Die Tabelle ist entsprechend simpel und bietet durch die Serialisierung dennoch absolute Flexibilität bzgl. irgendwelcher Daten:

CREATE TABLE `index_user_queue` (
`id` bigint(20) NOT NULL auto_increment,
`serialized` text collate utf8_unicode_ci,
PRIMARY KEY (`id`)
)

(more…)

Zend_Search_Lucene und Symfony - Teil 1

10.07.2007

You are currently browsing the archives for the Lucene category.

Creative Commons License
This work is licensed under a
Creative Commons Attribution-Share Alike 2.5 License.
t8d blogged mit WordPress