Suchindex richtig vorbereiten

  • Affected Version
    WoltLab Suite 5.4
    Affected App
    WoltLab Suite Core

    Hallo,

    ich frage mich, wie die Suchfunktion richtig zu bedienen ist bzw. der Suchindex richtig vorzubereiten ist.

    Ich habe eine Rezepte-Datenbank mit eigenem Suchindex. In diesen fülle ich über den SearchIndexManager::getInstance()->set() die Rezeptnamen im Feld "subject" ein. Die Felder "message" und "metaData" bleiben leer.

    Auf diesem Wege wird auch Spaghetti a la bolognese eingetragen.

    Suche ich nun im Frontend über die Suchfunktion genau mit dieser Wörterkombination gibt es kein Ergebnis.

    Ändere ich die Suchanfrage auf Spaghetti bolognese wird das Ergebnis angezeigt.

    Gleiches Verhalten gilt für andere Suchanfragen, die Wörter mit 2 oder weniger Buchstaben enthalten oder eben nicht enthalten.

    Dazu die Fragen:

    1) Muss der Suchindex anders vorbereitet werden?

    2) Ist eine Server-Einstellung für das Problem verantwortlich?

    3) Sollten vielleicht auf Seiten des WCF zu kurze Worte rausgefiltert werden und garnicht an den Suchalgortihmus weitergereicht werden?

    Ich bin mir nicht sicher, aber habe den Eindruck, dass diese Problematik erst seit 5.4. existiert.

    Dass ElasticSearch eine stärkere Alternative ist, ist mir klar. Hier geht es um den Standardumfang.

  • Hallo,

    1) Muss der Suchindex anders vorbereitet werden?

    Nein. Du solltest aber sinnvollerweise nicht nur den Titel, sondern auch den Inhalt ausfüllen.

    2) Ist eine Server-Einstellung für das Problem verantwortlich?

    Nein.

    3) Sollten vielleicht auf Seiten des WCF zu kurze Worte rausgefiltert werden und garnicht an den Suchalgortihmus weitergereicht werden?

    Ich bin mir nicht sicher, aber habe den Eindruck, dass diese Problematik erst seit 5.4. existiert.

    Im Sinne der Benutzererfahrung schreibt WoltLab Suite den eingegeben Suchbegriff um. So wird beispielsweise für jeden „Term“ der kein Präfix hat, ein + als Präfix verwendet, damit MySQL nicht dutzende Ergebnisse ausspuckt, in denen die Hälfte der Suchbegriffe gar nicht vorkommt. Das führt in Verbindung mit zu kurzen Termen dazu, dass die Suchanfrage einfordert, dass der jeweilige Term im Inhalt zu finden sein muss, aber die Terme gar nicht erst in den Suchindex aufgenommen wurden und deswegen nicht gefunden werden konnten.

    In WoltLab Suite 5.3 wurde das + bei kurzen Suchbegriffen weggelassen, dieser Spezialfall ist bei der Neuentwicklung des „Umschreibers“ für die InnoDB-Suche offenbar nicht berücksichtigt worden. Neuentwicklung, weil die InnoDB-Suche komplett anders als die MyISAM-Suche funktioniert und beide praktisch keine Gemeinsamkeiten besitzen. Insbesondere ist die InnoDB-Suche in Bezug auf gültige Suchanfragen deutlich strikter, während MyISAM alles akzeptiert (egal wie viel oder wenig sinnvoll es ist).

    Nichtsdestotrotz bleibt die MySQL-Volltext-Suche sowohl für MyISAM als auch InnoDB ein einziger Unfall.

  • Tim Düsterhus March 15, 2022 at 3:26 PM

    Added the Label Confirmed
  • Tim Düsterhus March 23, 2022 at 9:06 AM

    Set the Label from Confirmed to Fixed

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!