Grundfunktionen in webtodate
Vorab: Es gibt eine w2d-Java/Client-Suche, die nur den Kurztext, oder bis zu 2000 Zeichen mitnimmt in die Suche. (Aber wie die PHP Suche auch, nicht alle Informationen werden berücksichtigt.) Aus Performancegründen sollte man PHP-Suche verwenden, weil die Daten dann am Server generiert werden und das Ganze i.d.R schneller geht.
1. Die Indexdatei ist die Informationsdatei "fts.idx", die web2date automatisch bei jeder Generierung für die Suche (PHP-Suche mit search.php) erstellt. Diese ist auf "Seitenbasis". D.h. pro Seite eines Projektes wird ein Informationseinheit (Suchbereich) in der Indexdatei abgelegt.
Ebenso werden bestimmte Objekte und Inhalte nicht berücksichtigt, wie Bildunterschriften, HTML-Absätze, Sidebar, Teaser usw. auch für Shop2date wichtig: Keine Artikelnummern und Preise.
2. Die Search.php ist die Suchroutine von web2date, die diese Indexdatei liest, und die bei einem Suchtext einfach nur prüft: ist "Suchtext in abgespeicherter Seiteninformation der Indexdatei enthalten?, dann Fundstelle, also die Seite an sich ausgeben, jedoch nicht die Fundstelle direkt".
Beachte dabei: a) Nicht die gesamte Seite ist gespeichert, und b) das was ausgegeben wird ist nur der Titel und der Abstract, nicht aber die Stelle, wo das Suchwort vorkommt. Ebenso ist der Link nur auf die Seite und nicht auf den Absatz. Da sucht man sich u.U. zu Tode. Natürlich kann man auch nicht nach mehreren Worten gleichzeitig suchen. Gibt man mehrere Worte ein, müssen die genauso exakt aufeinanderfolgen.
Ebenso ist die Ausgabe immer in der Reihenfolge der Seiten, wie Sie im Projekt angelegt wurden (historisch) und nicht nach Relevanz. Da kann Dein Suchwort 1000x auf einer Seite kommen, das verändert die Ausgabereihenfolge nicht. Diese Seite wird wegen „1000x mal gefunden“ nicht weiter nach oben sortiert.
Gegen zwei Probleme mit 3 Punkten reagieren
1. Die Indexdatei wird durch ein Excel-Tool außerhalb von web2date erstellt mit zusätzlichen Informationen (u.a. Artikelnummer und Preis). Das muss dann aber bei jeder Generierung wiederholt werden. Dabei wird die standardmäßig von web2date generierte Indexdatei überschrieben.
2. Die Search.php wird einmal im Order web2date/common/ ausgetauscht, durch eine neue search.php (von mir).
3. Ggf. optimiert man (muss man aber nicht) die ccml-Dateien, damit man auf alle Absätze direkt verweisen kann und nicht nur auf die Seite (mag für shoptodate nicht so wichtig sein, bei eher redaktionellen Seiten mit web2date durchaus. s.u.)
Was kann man jetzt damit mehr suchen?
- Ich kann 1- n Worte gleichzeitig suchen, die auch irgendwo stehen können auf der Seite.
-
Die Ausgabe wird nach Relevanz gesteuert. Die Relevanz errechnet sich aus
a) Position der Seite (Startseite, Hauptseite, Hauptseite 2 Stufe usw.)
b) Fundstellenart (Textabsatz, Bildunterschrift, Tabelle ...)
c ) Fundstellenposition (Content, Sidebar, Titel ...)
d ) sowie aus Länge des Absatzes (für Informationsgehalt, weil kurze Absätze wenig Information bieten)
e ) Häufigkeit der Treffer und trefferlose Absätze auf dieser Seite.
Die Werte sind natürlich anpassbar -
Die Ausgabe kann
a ) nach Seiten erfolgen "Zeige mir alle Seiten, die einen Treffer haben"
b ) nach Absätzen "Zeige mir alle Absätze einer Seite, die einen Treffer haben" oder
c ) nach Fundstellen "Zeige mit alle Treffer in diesem Absatz" - Die Ausgabe zeigt alle relvanten Daten an: Seitentitel, Bild, Abstract, Fundstelleninformationen, den Orginaltext mit Fundstelle und weiterführende Links (Layout per CSS anpassbar).
- Wenn oben die 3. Maßnahme (Optimierung der ccml-Dateien) gemacht wurde (wie auf meiner Site), dann kann ich auf eine Fundstelle klicken und direkt die Ausgabe auf den Absatz der echten Seite positionieren. Macht man das nicht, hat man jedoch immer wenigstens in der Suchausgabe zumindest eine Beschreibung, wie Seitenleiste, Bildunterschrift..., und kann auf die Stelle der Fundstelle hinweisen. Der User weiß also, wo und was er suchen soll.
- Ich kann meine Suche inzwischen auf die Hauptseiten meines Menüs einschränken, so dass ich nicht überall suchen muss, sondern nur in einem Hauptbereich der Site.
- ch kann die Suche auf Artikel, redaktionellen Text oder uneingeschränkt stattfinden lassen.
- Es kann nach Preise, ungefähren Preisen und nach Artikelnummern gesucht werden.
- Es kann nach Aktualität des Textes / Produktes gesucht werden.
Was ich nicht kann, und warum ich es nicht b
- den Text farblich in der Seite markieren (ist m.E. nicht nötig, da man ja eine Vorschau auf den Absatz haben kann und dort die Fundstellen farbig sind).
- Zwingende Bedingung "beide Suchworte müssen vorkommen". Wenn beide Suchworte vorkommen erhöht es die Relevanz, dadurch wird die Fundstelle früher ausgegeben. Eine Unterscheidung "beide Suchworte müssen" oder "nur ein Suchwort genügt" ist bei der geringen Suchmenge m.E. nicht nötig, da dies durch die Ausgabe-Sortierung nach Relevanz kompensiert wird. Aber es gibt auch eine Option "both=yes" als Übergabe-Parameter, die diese Funktion ansteuert.
- Groß-Kleinschreibung beachten: Wäre eine Option, wenn es wirklich nötig ist, sehe aber darin bisher wenig Sinn. Könnte man mit einem Radio-Button und einer Option binnen weniger Minuten realisieren.
- und was sonst noch fehlt, weiß ich nicht.
P.S. was web2date und ich auch nicht kann ist z.B. ein Gästebuch / Forum zu durchsuchen. Die Daten sind ja nicht im Projekt, sondern nur auf dem Server. Da könnte ich noch Zeit investieren und habe schon einen Ansatz: Da ich aus dem Internet Kurse laden kann, könnte ich auch Daten aus einem Gästebuch nachladen. Also bei Bedarf, ist auch das machbar.