Lucene
Die EGOCMS Lucene Schnittstelle wird bis zur CMS Version 18.5 verwendet. Genutzt wird die Lucene Version 6.6.5. Abgelöst wird die Lucene Anbindung durch Elasticsearch mit der Lucene Version 7.0 und höher.
Die Ergebnisse einer Suche erhalten einen sogenannten Score, welcher vorgibt, an welcher Position ein Suchtreffer angezeigt wird. Das CMS wandelt den von Lucene errechneten Score auf einen Wert von 0 bis 5 um. Dieser Score kann über die Suchrelevanz manipuliert werden, folgt aber hauptsächlich den Regeln des Lucene Suchalgorithmus. Die Suchrelevanz lässt sich auf zwei Arten im CMS einstellen:
Gewichtung einzelner Felder
Über die Mandanten Administration lassen sich über den Reiter Suche folgende Felder während der Indizierung mit dem Faktor 1 bis 100 boosten (bedeutet, dass ein Treffer in diesen Felder höher bewertet wird):
- Schlagwörter (Standard 100)
- Meta-URL (Standard 50)
- Name (Standard 25)
- Titel (Standard 12)
- Kurzbeschreibung (Standard 6)
- Inhalt (Standard 3)
- Sonstige Felder/Extrafeld (Standard 1)
Achtung: Die Frontend Administration speichert den Inhalt in das Extrafeld.
Ab Lucene 7.0 wird empfohlen, den Boost pro Feld während der Suche zu setzen und nicht mehr während der Indizierung. Das hat auch den Vorteil, dass der Suchindex nicht neu berechnet werden muss, wenn die genannten Einstellungen geändert werden und man zudem für unterschiedliche Suchen/Filtern in einem Projekt andere Einstellungen verwenden kann. Die Möglichkeit, die einzelnen Felder pro Seite individuell einzustufen, ist aber nur mit der aktuellen Lösung denkbar.
Gewichtung einer Seite
Unter dem Reiter Navigation einer Seite lässt sich die Suchgewichtung dieser Seite maximal verdoppeln oder halbieren (von -100% bis +100%). Diese Funktion ist ab Lucene 7.0 nicht mehr verfügbar.
Score Berechnung
In Lucene besteht der Index aus einzelnen Dokumenten (ein Dokument entspricht dabei einer CMS Seite). Jedes Dokument erhält unter anderem die in 1.1 genannten Felder, die bei einer Suche relevant sind. Der Score für ein Dokument bildet sich aus der Kombination der Scores für diese einzelnen Felder. Einfaches Beispiel ohne Boosts der Felder (alle Felder haben die selbe Gewichtung):
Zwei Dokumente haben den selben Inhalt im Feld A. In Dokument 1 wird der Suchbegriff auch in Feld B gefunden. Das Dokument 1 erhält einen höheren Score als das Dokument 2.
Hinzu kommt noch die Lucene Formel, die den Score in Abhängigkeit der Anzahl der Vorkommnisse in einem Feld und die Länge des Feldes im Vergleich zu den anderen Feldern in diesem Dokument berechnet. Weitere Beispiele zur Veranschaulichung (ohne Boosts):
Beispiel 1:
Dokument 1 hat im Feld Titel 1 Wort und der Suchbegriff kommt 1 mal vor.
Dokument 2 hat im Feld Titel 2 Wörter und der Suchbegriff kommt 2 mal vor.
Dokument 2 erhält einen höheren Score als Dokument 1.
Beispiel 2:
Dokument 1 hat im Feld Titel 1 Wort und der Suchbegriff kommt 1 mal vor.
Dokument 2 hat im Feld Titel 2 Wörter und der Suchbegriff kommt 1 mal vor.
Dokument 1 erhält einen höheren Score als Dokument 2.
Beispiel 3:
Dokument 1 hat im Feld Titel 2 Wörter und der Suchbegriff kommt 2 mal vor.
Dokument 2 hat im Feld Titel 2 Wörter und im Feld Inhalt 500 Wörter und der Suchbegriff kommt im Feld Titel 1 mal und im Feld Inhalt 1 mal vor.
Dokument 1 erhält einen höheren Score als Dokument 2.
Beispiel 4:
Dokument 1 hat im Feld Titel 2 Wörter und der Suchbegriff kommt 2 mal vor.
Dokument 2 hat im Feld Titel 2 Wörter und im Feld Inhalt 500 Wörter und der Suchbegriff kommt im Feld Titel 1 mal und im Feld Inhalt 10 mal vor.
Dokument 2 erhält einen höheren Score als Dokument 1.
Unter Berücksichtigung der Lucene Formel ist eine Einstellung der Suchrelevanz im CMS schwierig. Eine bestimmte Seite möglichst weit oben in den Suchtreffern zu platzieren kann dadurch lediglich begünstigt, aber nicht erzwungen werden. Ausschlaggebend bleibt größtenteils das Verhältnis von der Anzahl der Vorkommnisse in einem Feld zu dessen Länge und in Kombination zu den anderen Feldern in einem Dokument (und das alles im Vergleich zu anderen Dokumenten, die die Suchanfrage zurückliefert).
Den Boost einzelner Felder in die Rechnung aufzunehmen, kann einen höheren/niedrigeren Score in den genannten Beispielen erzielen und das Ergebnis drehen. Dadurch ändert sich aber nicht das grundlegende Prinzip der Lucene Formel.
Tipps und Tricks
- Die höchste Wahrscheinlichkeit, eine Seite in den Suchtreffern möglichst weit oben angezeigt zu kriegen, erhält man, wenn man die Suchgewichtung der Felder für seine Zwecke einstellt. z.B. würde es Sinn ergeben, den Namen einer Seite möglichst hoch zu boosten, so dass Seiten, die den Suchbegriff im Namen haben (welcher üblicherweise im Vergleich zum Inhalt sehr kurz ist), einen besseren Score erhalten (sofern man den Namen einer Seite als primäres Suchfeld ansieht). Das funktioniert aber auch nur, wenn gleichzeitig keine anderen Felder einen ähnlich hohen Boost erhalten, da sich dadurch in der Relation die gewünschte Wahrscheinlichkeit wieder senkt.
- Möchte man z.B., dass Treffer in Name und Schlagwort unbedingt einen hohen Score erzielen, würde es sich anbieten, den Boost für Schlagwörter und Name auf 100 zu setzen und für alle anderen Felder auf 1. Die selbe Denkweise lässt sich auch auf andere Kombinationen für den Feld Boost anwenden, abhängig von den bevorzugten Kriterien des Kunden.
- Auf den Boost einer ganzen Seite sollte man sich hingegen weniger verlassen. Da man hier den Score nur maximal verdoppeln oder halbieren kann, ist der Effekt unter Umständen minimal: ein Score von etwa 2 wird zu 3 oder 4, bleibt aber weiterhin relativ weit unter dem höhsten Score von 5. Außerdem wird diese Funktion mit Lucene 7.0 nicht mehr verfügbar sein.
- Eine Seite gezielt in den Suchtreffern höher auftauchen zu lassen, in dem man z.B. im Inhalt der Seite bestimmte Begriffe öfters wiederholt, kann zwar für die interne Suche zu Erfolgen führen, gleichzeitig aber bei externen Suchen (Google, usw.) negativ bewertet werden.
Weiterführende Links
Basierend auf Lucene 3.5.0 stehen folgende Dokumente zur Verfügung:
Grundlegendes zum Lucene Scoring
Technische Beschreibung der Score Berechnung
Elasticsearch
Noch nicht verfügbar.