Heim  >  Artikel  >  Backend-Entwicklung  >  Prinzip der PHP-Suchfunktion

Prinzip der PHP-Suchfunktion

藏色散人
藏色散人Original
2019-11-09 09:24:302831Durchsuche

Prinzip der PHP-Suchfunktion

Prinzip der PHP-Suchfunktion

Die Idee der PHP-Suchfunktion (Wortsegmentierung + Matching)

1. Die einfachste Suche (mit Like-Anweisungsmatching)

Diese Suche kann nur für die Einzelwortsuche verwendet werden

Zum Beispiel: Benutzer-Spitznamensuche, Gruppennamensuche usw.

Empfohlen: „PHP-Tutorial

2.

Diese Methode kann zum Durchsuchen von Datensegmenten verwendet werden, z. B. zum Abrufen von Artikelinhaltstiteln usw.

Prinzip:

Verwenden Sie die Volltextsuche mit MySQL

Implementierungsschritte

1. Voraussetzungen für die Verwendung des MySQL-Volltextabrufs:

Der Tabellentyp muss MyISAM sein (Innodb kann auch nach MySQL5.6 verwendet werden)

Der Feldtyp zum Einrichten der Volltextsuche muss char, varchar, text sein

2. Richten Sie die erweiterte Konfiguration für die Volltextsuche ein (konfigurieren Sie MySQL)

Da die Länge der indizierten Wörter in MySQL standardmäßig 4 beträgt, können Sie chinesische Wörter unterstützen Dies muss zuerst geändert werden.

*Unix-Benutzer müssen my.cnf ändern. Im Allgemeinen befindet sich diese Datei in /etc/my.cnf. Wenn sie nicht gefunden wird, suchen Sie zuerst nach „find / -name“ „my.cnf“. 🎜>

Fügen Sie an der [mysqld]-Position hinzu:

ft_min_word_len = 2

Andere Attribute sind

ft_wordlist_charset = gbk

ft_wordlist_file = /home/soft/mysql/share/mysql /wordlist-gbk.txt

ft_stopword_file = /home/soft/mysql/share/mysql/ stopwords-gbk.txt

Eine kleine Erklärung:

ft_wordlist_charset repräsentiert das Zeichen Satz des Wörterbuchs. Derzeit sind die gut unterstützten (UTF-8, gbk, gb2312, big5)

ft_wordlist_file ist eine Wortlistendatei. Jede Zeile enthält ein Wort und seine Worthäufigkeit (getrennt durch a Anzahl der Tabulatoren oder Leerzeichen, speziell zur Eliminierung)

ft_stopword_file bedeutet, Wortlisten herauszufiltern, die nicht indiziert sind, eine pro Zeile.

ft_min_word_len ist die Mindestlänge der dem Index hinzugefügten Wörter Der Standardwert ist 4. Um chinesische Schriftzeichen zu unterstützen, wird er in 2 geändert

3. Erstellen Sie eine Volltextsuche (fügen Sie einen Index zur Tabelle hinzu)

Verwenden Sie das Schlüsselwort FullText, um Felder beim Erstellen einer Tabelle zu identifizieren, und verwenden Sie ALTER TABLE (oder CREATE INDEX), um einen Index für eine vorhandene Tabelle zu erstellen

CREATE fulltext INDEX index_name ON table_name(colum_name);

4. Verwenden Sie die Volltextsuche (SQL-Anweisung).

Verwenden Sie die MATCH-Funktion in der WHERE-Klausel von SELECT

Gesamtsyntax: MATCH(col1,col2,…) AGAINST (expr[search_modifier]).

Der Inhalt in MATCH ist die Spalte, in der der FULLTEXT-Index erstellt wurde und die Daten gefunden werden sollen

Der Ausdruck in AGAINST ist der Textinhalt, der gefunden werden soll, und

search_modifier ist optional. Die möglichen Werte von

search_modifier sind:

IN NATURAL LANGUAGEMODE、IN NATURAL LANGUAGE MODE WITH QUERY EXPANSION、IN BOOLEAN MODE、WITH QUERY EXPANSION。

Jeder Wert von search_modifier stellt eine Art der Volltextsuche dar, nämlich Volltextsuche in natürlicher Sprache und Volltextsuche in natürlicher Sprache mit Abfrageerweiterung, boolescher Volltextsuche, abfrageerweiterter Volltextsuche (Standardmäßig wird der MODUS „IN NATÜRLICHER SPRACHE“ verwendet).

SELECT * FROM articles WHERE MATCH (tags) AGAINST ('旅游' IN BOOLEAN MODE);

Das obige ist der detaillierte Inhalt vonPrinzip der PHP-Suchfunktion. 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