Volltextsuche A-Z

19. April 2017

Die Gewichtung der gefundenen Dokumente im Suchergebnis einer Volltextsuche wird durch eine ganze Reihe von Faktoren beeinflußt, unter Anderem:

  • Wie häufig kommt der Suchbegriff im Index (also der Summe aller Dokumente) vor?
  • Wieviele Dokumente enthält der Index insgesamt?
  • In welchem "Lucene-Feld" wurde der Suchbegriff gefunden und welche Gewichtung (Boost) hat das Feld?

In womodo 7.4.1 haben wir diese Faktoren und seine Auswirkungen genauer analysiert und eine ganze Reihe von Verbesserungen vorgenommen, die die Gewichtung der Suchergebnisse wesentlich verbessert.

Sprachspezifische Textanalysen

Bisher wurde jedes einzelne Wort eines Dokuments in den Index geschrieben. Damit stehen aber auch Wörter wie der, ein, an, über, ... im Index und führen dazu, daß der Index sehr viele für die Suche nicht relevante Wörter enthält. Das "verwässert" den Index und vermindert die Möglichkeit einer aussagekräftigen Gewichtung der Suchergebnisse.

In womodo 7.4.1 haben wir nun (optional) sprachspezifische Textanalysen eingeführt, die diese "Füllwörter" beim Indexieren und bei der Suche ignorieren.

Darüber hinaus führen diese Textanalysen dazu, daß in der Regel nur "Stammwörter" indiziert werden und man dadurch z. B. bei der Suche nach "Land" auch Inhalte findet, die das Wort "Länder" enthalten.

Sprachspezifische Textanalysen stehen für die Sprachen deutsch, englisch, italienisch, französisch und spanisch zur Verfügung.

Item- und Meta Boosts

Seit Langem kann in womodo für bestimmte Items ein "Boost-Faktor" angegeben werden um zum Ausdruck zu bringen, daß Inhalte bei Treffern in diesem Feld höher gewichtet werden sollen. Systemintern wurden außerdem die Metas "title" und "description" mit Faktoren 2 und 1.5 "geboostet".

Tatsächlich haben diese Boosts aber nur dann eine Auswirkung, wenn auch explizit in diesen Feldern gesucht wird. Per Default durchsucht womodo aber nur das interne Feld "allcontent", das alle Textfragmente gesammelt enthält. Daher hatten in der Regel die Item-Boosts keine Auswirkung.

In womodo 7.4.1 durchsuchen wir nun per Default mehrere Felder: allcontent, TITLE, DESCRIPTION und KEYWORDS. Sollen weitere Felder durchsucht werden, kann das nun über folgende Syntax zum Ausdruck gebracht werden:

<tml:query type="lucene:Feld_1, ..., Feld_n">

Erst dadurch wirkt sich ein Item-Boost in der erwarteten Weise aus.

In diesem Zusammenhang ist es wichtig zu wissen, daß bei der Volltextsuche an zwei unterschiedlichen Stellen ein "Boost" verwendet werden kann: beim Indizieren und beim Ausführen der Suche. Die im womodo admin Client angegebenen Boost-Faktoren werden zum Zeitpunkt der Indizierung ausgewertet. Damit wird das angegebene Feld "im Index" geboostet. Für eine Änderung des Faktors muß dann der Index neu erstellt werden.

Innovation Gate empfiehlt, diesen "Index-Boost" nicht mehr zu verwenden und statt dessen ein Boost zur Suchzeit anzugeben:

Optional kann in der oben beschriebenen neuen Syntax auch ein Boostfaktor für die zusätzlichen Felder angegeben werden, der zur Suchzeit ausgewertet wird:

<tml:query type="lucene:headline^2">

Mit diesem Verfahren kann nun auch der bisher fest verdrahtete Boost für TITLE und DESCRIPTION individuell festgelegt werden:

<tml:query type="lucene:TITLE^3,DESCRIPTION^2">

Aus diesem Grund haben wir den Default-Boost für TITLE und DESCRIPTION nun auf 1 gesetzt.

Index archivierter Dokumente

Bisher indiziert womodo Dokumente unabhängig vom Veröffentlichungsstatus und insbesondere auch alle archivierten Dokumente verbleiben im Index.

Ab womodo 7.4.1 kann nun bestimmt werden, daß nur veröffentlichte Dokumente indiziert werden.

Wie in der Einleitung beschrieben, geht auch die Anzahl der Dokumente insgesamt und die Verteilung der einzelnen Begriffe im Gesamtindex in die Berechnung der Gewichtung der Suchergebnisse ein. Daher können viele archivierte Dokumente diese Berechnung entscheidend stören.

Weitere Verbesserungen

Wenn in der Suche kein logischer Operator (AND, OR) angegeben war, wurden mehrere Suchbegriffe bisher fest mit UND verknüpft. Ab womodo 7.4.1 kann der Default-Operator nun frei bestimmt werden:

<tml:query type="lucene" options="operator:or">

Bisher wurden Lucene-Felder mit vielen Wörtern geringer gewichtet als Felder mit wenigen Wörtern. Das entspricht aber nicht der tatsächlichen Verwendung von Feldern in womodo. Daher haben wir diesen Faktor nun eliminiert.

Fazit

Wir glauben, mit der Vielzahl an Verbesserungen bei der Volltextsuche die Gewichtung der Ergebnisse entscheidend verbessert zu haben. Leider führen diese Änderungen aber dazu, daß beim Update auf womodo 7.4.1 der Lucene-Index neu aufgebaut werden sollte, damit die Verbesserung sichtbar wird.