So führen Sie eine schnelle Fuzzy-Suche nach Spitznamen in MySQL durch

WBOY
Freigeben: 2016-09-21 14:13:05
Original
1138 Leute haben es durchsucht

MySQL führt eine Fuzzy-Abfrage bei der Spitznamensuche durch. Wenn es zu viele Benutzer gibt, ist die Like-Abfrage sehr langsam.

Antwortinhalt:

MySQL führt eine Fuzzy-Abfrage bei der Spitznamensuche durch. Wenn es zu viele Benutzer gibt, ist die Like-Abfrage sehr langsam.

  1. Erstellen Sie einen Index für das Spitznamenfeld in dieser Tabelle in der Datenbank

    Schlüssel `nikename`(`nikename`)

  2. Volltextindex mit SQL-Anweisung

    ALTER TABLE `user` ADD FULLTEXT `fidx_user_nikename` (`nickname`)

Anschließend fragen Sie mit der folgenden Methode ab

<code>SELECT * FROM \`user\` WHERE MATCH (nickname)AGAINST ('xxx')</code>
Nach dem Login kopieren

Wenn es wie %name% ist, gibt es meines Wissens nach keine Möglichkeit. Wenn kein % davor steht, können Sie einen Index erstellen oder die LOCATE-Funktion ausprobieren, aber das hat wahrscheinlich keine Auswirkung.

Wo ist Instr?

Verwenden Sie für die Fuzzy-Suche die Wortsegmentierung. Sphinx Coreseek oder Xunsearch (Xunsou)

Wenn Ihre MySQL-Version höher als 5.7 ist, unterstützt der integrierte Ngram-Volltextindex die chinesische Wortsegmentierung. Ich habe ihn im Projekt verwendet, und es gibt bereits Tutorials zur Verwendung online

Verwenden Sie eine Suchmaschine, um häufig gesuchte Felder zu indizieren, und verwenden Sie sie dann zusammen mit Caching

Verwandte Etiketten:
php
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage