Volltextsuche in MySQL
  • 11 Apr 2023
  • 2 Minuten zu lesen

Volltextsuche in MySQL


Article Summary

Die Volltextsuche (FTS) ermöglicht einen ausgereiften Ansatz bei der Textsuche in Totara, insbesondere innerhalb des Katalogs. Einzelheiten zur Einrichtung mit MySQL finden Sie auf dieser Seite.

Sprachunterstützung

MySQL verwendet standardmäßig die Zusammenstellung von Groß- und Kleinschreibung (FTS) für die Volltextsuche. Sie können jedoch eine andere Zusammenstellung angeben, z. B.:

$CFG->dboptions['ftslanguage'] = 'utf8_unicode_ci';
 $CFG->dboptions['ftslanguage'] = 'utf8mb4_0900_as_ci';
 $CFG->dboptions['ftslanguage'] = 'utf8mb4_de_pb_0900_ai_ci';

MySQL unterstützt keine japanischen und anderen Sprachen mit sehr kurzen Wörtern ohne Leerzeichen dazwischen. Aktivieren Sie die folgende Einstellung, um eine grundlegende experimentelle Unterstützung dieser Sprachen zu erhalten:

$CFG->dboptions['fts3bworkaround'] = true;

 Füllen Sie nach jeder dieser Änderungen die FTS-Tabellen neu aus und erstellen Sie die Indizes neu, indem Sie Folgendes ausführen:

php admin/cli/fts_repopulate_tables.php
 php admin/cli/fts_rebuild_indexes.php

Mindestlänge des Suchbegriffs

Die MySQL-Standard-Suchzeichenbegrenzung kann durch Bearbeiten der MySQL-Konfigurationsdatei geändert werden:

[mysqld]
 innodb_ft_min_token_size=2
 ft_min_word_len=2

Wörter stoppen 

Stoppwörter sind eine Reihe von Wörtern, die von Index- und Suchanfragen ausgeschlossen werden. Sie hängen von der Sprache ab, die bei der Indizierung und Suche verwendet wird, sowie von der Wörterbuchpräsenz für die Datenbankinstallation. Wenn ein Nutzer beispielsweise nach „Hotels in Wellington“ sucht, schließt das System „in“ aus der Suche aus.

Weitere Details zu den MySQL-Stoppwörtern finden Sie in der MySQL-Hilfedokumentation.

Morphologische Suche

Ngram ist ein integrierter MySQL-Volltext-Parser. Er bestimmt den Anfang und das Ende von Wörtern mithilfe von Leerzeichen und bestimmten Buchstabensequenzen. Sie ist normalerweise standardmäßig aktiviert, kann aber von der Verteilung abhängen. Es kann zwei oder mehr Wörter analysieren, die aus zusammengesetzten Wörtern stammen. Zum Beispiel wird nach dem deutschen Wort „Fußballweltmeisterschaft“ nach Wörtern wie „meister“, „schaft“ usw. gesucht. Ein Volltextindex, der ohne die Verwendung dieses Plugins erstellt wird, kann das Wort nicht in kleinere Teile aufteilen, und die SQL, die nach einem Schlüsselwort wie 'meister' sucht, kann den Datensatz nicht finden.

Für einige ideografische Sprachen (wie das Beispiel oben) ist der normale Volltextindex auf das beschränkt, wonach er suchen kann, da es keine Trennzeichen für diese Wörter gibt. Hier kann Ngram nützlich sein. Es handelt sich um eine zusammenhängende Sequenz aus einer Anzahl von Zeichen aus einer Textsequenz. Die Hauptfunktion des Ngram-Volltext-Parsers ist das Token einer Textsequenz in eine zusammenhängende Sequenz von N Zeichen.

In einigen Fällen kann Ngram falsch positive Ergebnisse liefern (obwohl sie niedrig bewertet sind und am Ende der Liste erscheinen). Daher wird empfohlen, dass Sie bestätigen, dass das Suchverhalten Ihren Bedürfnissen entspricht, nachdem Sie die Ngram-Unterstützung aktiviert haben.

Um Ngram zu aktivieren, ändern Sie Ihre Einstellung config.php wie folgt:

$CFG->dboptions['ftsngram'] = true;

Als Nächstes führen Sie aus:

php admin/cli/fts_rebuild_indexes.php

Diese Einstellung wirkt sich nur in MySQL aus.

Suche ohne Akzent

Standardmäßig unterstützt MySQL Diacritics, aber es hängt von der Zusammenstellung und Sprache ab, die in $CFG->dboptions definiert sind['ftslanguage']. Wenn die Zusammenstellung beispielsweise istutf8_general_ci, dann gibt die Suchanfrage, die entweder das Wort 'första' oder 'forsta' enthält, einen Datensatz zurück, der das Wort 'första' enthält.

© Copyright 2024 Totara Learning Solutions. All rights reserved. Some content originally obtained via GPLv3 license and continues to be available under GPLv3. All other content is the sole copyright of Totara Learning Solutions. 


War dieser Artikel hilfreich?

Changing your password will log you out immediately. Use the new password to log back in.
First name must have atleast 2 characters. Numbers and special characters are not allowed.
Last name must have atleast 1 characters. Numbers and special characters are not allowed.
Enter a valid email
Enter a valid password
Your profile has been successfully updated.