Heim >Datenbank >MySQL-Tutorial >Wie kann ich in MySQL eine akzentsensitive Volltextsuche durchführen?

Wie kann ich in MySQL eine akzentsensitive Volltextsuche durchführen?

DDD
DDDOriginal
2024-12-17 02:22:24791Durchsuche

How Can I Perform Accent-Sensitive Full-Text Searches in MySQL?

Sortierung für akzentsensitive Suchen in MySQL verwenden

Bei der Durchführung von Volltextsuchen in MySQL kann es notwendig sein, den Zeichenakzent zu berücksichtigen Empfindlichkeit. In dieser Situation kann es schwierig sein, zwischen akzentuierten und nicht akzentuierten Wörtern zu unterscheiden, wie das Beispiel in der Frage zeigt.

Um dieses Problem zu beheben und sicherzustellen, dass die Suche akzentsensitiv ist, haben Sie Folgendes getan zwei Optionen:

  1. Akzentsensitiv deklarieren Sortierung:

    Ändern Sie die Sortierung des betreffenden Felds, um eine binäre Sortierung zu verwenden, z. B. utf8_bin. Dadurch werden die UTF-8-codierten Bytes als Rohdaten verglichen, was zu einer Akzentsensitivität führt.

    ALTER TABLE words
    ALTER COLUMN word VARCHAR(10) COLLATE utf8_bin;
  2. Collate-Klausel in Abfrage verwenden:

    Wenn Ihre Suchanfragen in der Regel akzentunabhängig sind, Sie aber eine Ausnahme für eine bestimmte Abfrage benötigen, können Sie die COLLATE-Klausel an das problematische Feld in Ihrem anhängen Abfrage:

    SELECT *  FROM `words`
    WHERE `word` = 'abád' COLLATE utf8_bin;

Zusätzliche Überlegungen für MySQL 8.0 und zukünftige Versionen:

  • Passen Sie den Zeichensatz immer an den Anfang von an der Kollationsname.
  • Sortierungen, die auf _bin enden (z. B. utf8mb4_bin) Groß- und Kleinschreibung ignorieren.
  • Sortierungen, die _as_ enthalten (z. B. utf8mb4_as_ci), ignorieren Akzente, behalten aber die Groß-/Kleinschreibung bei.
  • Erwägen Sie die Verwendung von utf8mb4 als Standardzeichensatz, da dies eine bessere Unicode-Unterstützung bietet.
  • Verlassen Sie sich nicht auf Konvertierungsroutinen wie CONVERT(), indem Sie in der Spalte die richtige Sortierung angeben Erstellung oder Tabellendefinition.

Das obige ist der detaillierte Inhalt vonWie kann ich in MySQL eine akzentsensitive Volltextsuche durchführen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn