Neue Suche auf Basis von Lucene?

Antworten
Benutzeravatar
shadowcat
Administrator
Beiträge: 5347
Registriert: Di 5. Feb 2013, 10:36
Kontaktdaten:

Neue Suche auf Basis von Lucene?

Beitrag von shadowcat »

Die alte Suchbibliothek wurde zwar bereits für LEPTON überarbeitet und dann so in BC übernommen, aber so richtig prickelnd ist das immer noch nicht. Zumal es auch nicht besonders gut dokumentiert ist. Schon der Gedanke daran, die Suchbibliothek zu überarbeiten, dreht mir die Zehennägel um. :D

Ich habe mich mal nach Alternativen umgesehen und bin bei ZendSearch_Lucene gelandet. Lucene ist eigentlich eine in / für Java entwickelte, indexbasierte Suche, für die es im Zend-Framework einen in PHP geschriebenen Port gibt.

Der Hauptunterschied zwischen einer Livesuche (wie in unserer lib_search) und einer indexbasierten Suche besteht darin, dass die Live-Suche zum Zeitpunkt der Suchanfrage den gesamten Volltext durchsucht, während die Indexsuche nur den eigenen Index durchforstet. Daher ist die Indexsuche in der Regel deutlich schneller als die Live-Suche. Der Haken: Der Index muß ja auch irgendwann mal erzeugt und aktuell gehalten werden.

Im Fall von BC wäre der richtige Zeitpunkt zum Erzeugen bzw. Aktualisieren des Index derjenige, wenn im Backend Änderungen stattfinden. Die derzeitigen Schnittstellen sind dafür allerdings nicht ausgerichtet. Eine Änderung im Core wäre natürlich möglich, bedingt allerdings eine relative enge Integration der Suchmaschine.

Ein Zwischenschritt könnte sein, die Indexsuche so zu integrieren, daß der Index in einem konfigurierbaren Abstand - z.B. einmal am Tag, einmal pro Stunde - neu erzeugt bzw. aktualisiert wird. Entweder bei Ausführung einer Suche durch einen Besucher, oder per Cronjob. Letzteres hätte den Vorteil, daß der Besucher, den es zufällig trifft, nicht so lange warten muß. ;) Der Nachteil der Variante ist selbstverständlich, daß man auch in einer Stunde ziemlich viele Änderungen machen kann, die dann zunächst nicht im Index stehen. Einem Button [Index aktualisieren] im Backend würde allerdings auch nichts im Wege stehen.

Ich habe leider keine Erfahrungen mit der Performance, weder der aktuellen Implementierung, noch der Index-Erzeugung. Die derzeitige Live-Suche ist intern so gestrickt, daß sie mit Timeouts arbeitet. Braucht ein Modul zu lange für die Ausführung der Suche, wird sie abgebrochen. Was natürlich im Umkehrschluß bedeutet, daß die Suchergebnisse unvollständig sind. Das wirkt sich allerdings hauptsächlich bei umfangreichen Webauftritten aus.
My software never has bugs, it just develops random features.
If it’s not broken, keep fixing it until it is
Benutzeravatar
ralf
Beiträge: 178
Registriert: Mi 6. Feb 2013, 10:03
Wohnort: Berlin
Kontaktdaten:

Re: Neue Suche auf Basis von Lucene?

Beitrag von ralf »

Lucene in action ist die Hölle - ich kenne aus praktischer Erfahrung eine Implementierung in einem Katalog (Wawi) mit über 500.000 Artikeln, keine noch so komplexe Suchanfrage dauert länger als eine Sekunde ... die Indexierung ist allerdings genauso höllisch, Lucene benötigt in diesem Fall einen eigenen dedicated Server, ist ein netter kleiner Speicherkannibale, der einen ordentlichen Käfig benötigt ... 8-)
phpManufaktur - Kreativ. Innovativ. Konstruktiv.
Benutzeravatar
shadowcat
Administrator
Beiträge: 5347
Registriert: Di 5. Feb 2013, 10:36
Kontaktdaten:

Re: Neue Suche auf Basis von Lucene?

Beitrag von shadowcat »

Das ist dann aber "die echte", oder? Die Zend-Variante ist ja "nur" kompatibel.
My software never has bugs, it just develops random features.
If it’s not broken, keep fixing it until it is
Benutzeravatar
ralf
Beiträge: 178
Registriert: Mi 6. Feb 2013, 10:03
Wohnort: Berlin
Kontaktdaten:

Re: Neue Suche auf Basis von Lucene?

Beitrag von ralf »

shadowcat hat geschrieben:Das ist dann aber "die echte", oder? Die Zend-Variante ist ja "nur" kompatibel.
yepp, ich habe den Versuch Lucene zu kapieren ziemlich rasch aufgegeben und diese Baustelle den beiden Freaks überlassen, die sie extra dafür eingefangen hatten ... 8-)
phpManufaktur - Kreativ. Innovativ. Konstruktiv.
Benutzeravatar
shadowcat
Administrator
Beiträge: 5347
Registriert: Di 5. Feb 2013, 10:36
Kontaktdaten:

Re: Neue Suche auf Basis von Lucene?

Beitrag von shadowcat »

Der PHP-Port ist auch ziemlich komplex und offen gesagt ziemlich langsam. Wobei ich ja die Indexerstellung derzeit noch bei jedem Aufruf der Suche drin habe. Momentan scheitere ich aber schon daran, aus dem QueryParser einfach nur die Suchbegriffe rauszukriegen... :cry:
My software never has bugs, it just develops random features.
If it’s not broken, keep fixing it until it is
Antworten