„Fuzzy-Suche“ ist ein Konzept, das der „präzisen Suche“ entgegengesetzt ist. Wie der Name schon sagt, bedeutet es, dass das Suchsystem automatisch Fuzzy-Suchen auf der Grundlage von Synonymen der vom Benutzer eingegebenen Schlüsselwörter durchführt und dadurch mehr Suchergebnisse erhält. Synonyme werden über die Verwaltungsschnittstelle des Systems konfiguriert. Wenn Sie „Computer“ und „Computer“ als Synonyme konfigurieren und nach „Computer“ suchen, werden in den Suchergebnissen auch Webseiten angezeigt, die „Computer“ enthalten. Die Fuzzy-Suche ist ebenfalls eine Synonymsuche. Die Synonyme werden hier vom Benutzer über das „Synonymwörterbuch“ in „Suchverwaltung“ konfiguriert. Wenn der Benutzer ein beliebiges Wort in den zu suchenden Synonymen auf der Suchseite eingibt und das Kontrollkästchen „Fuzzy-Suche“ aktiviert ist, werden auch alle Synonyminformationen des Schlüsselworts abgerufen.
Der folgende Editor stellt Ihnen eine Implementierungsmethode für PHP-Fuzzy-Abfragen vor (empfohlen). Der Herausgeber findet es ziemlich gut, deshalb teile ich es jetzt mit Ihnen und gebe es als Referenz. Folgen wir dem Editor, um einen Blick darauf zu werfen
Musterabfrage
1. SQL-Übereinstimmungsmuster
2. Regulärer AusdruckÜbereinstimmungsmuster (im Allgemeinen nicht empfohlen)
SQL-Übereinstimmungsmuster
1. SQL-Übereinstimmungsmuster verwenden Verwenden Sie den -Operator = oder! =, verwenden Sie stattdessen den Operator LIKE oder NOT LIKE; 2. Im SQL-Matching-Modus stellt MYSQL zwei Arten von
Platzhalterzeichenbereit. % stellt eine beliebige Anzahl beliebiger Zeichen dar (einschließlich 0)
_ stellt ein beliebiges einzelnes Zeichen dar
3 Verwenden Sie den SQL-Matching-Modus, wenn das Matching-Format das oben Genannte nicht enthält Der Abfrageeffekt eines der beiden Platzhalterzeichen entspricht = oder! =
4. Verwenden Sie beim Abgleich das SQL-Übereinstimmungsmuster, ohne Berücksichtigung der Groß- und Kleinschreibung
#查询用户名以某个字符开头的用户 #查询用户名以字符'l'开头的用户: l% SELECT * FROM user WHERE username LIKE 'l%'; #查询用户名以某个字符结尾的用户 #查询用户名以字符'e'结尾的用户:e% SELECT * FROM user WHERE username LIKE 'e%'; #查询用户名包含某个字符的用户 #查询用户名包含字符'o'的用户:%o% SELECT * FROM user WHERE username LIKE '%o%'; #查询包含三个字符的用户 SELECT * FROM user WHERE username LIKE '_'; #查询用户名第二个字符为o的用户:_o% SELECT * FROM user WHERE username LIKE '_o%';
Übereinstimmungsmuster für reguläre Ausdrücke Platzhalter (regulärer Ausdruck)
. Entspricht einem beliebigen einzelnen Zeichen
* entspricht 0 oder mehr Zeichen davor.
x* bedeutet, entspricht einer beliebigen Anzahl von x Zeichen
[..] Entspricht einem beliebigen Zeichen in Klammern
[abc] Entspricht dem Zeichen ab oder c [a-z] Entspricht einem beliebigen Buchstaben
[0-9] Entspricht einer beliebigen Zahl
[0-9] * Entspricht einer beliebigen Anzahl einer beliebigen Zahl
[a-z]* Entspricht einer beliebigen Anzahl von Buchstaben
^ steht für ein Zeichen oder eine
Start ^a bedeutet „beginnen mit“. Buchstabe a
$ bedeutet Ende mit einem bestimmten Zeichen oder String
s$ bedeutet Ende mit dem Buchstaben s
Verwendung Die im Vergleichsmuster für reguläre Ausdrücke verwendeten Operatoren sind:
REGEXP oder NOT REGEXP(RLIKE oder NOT RLIKE)
Hinweis: Das Muster für den regulären Ausdruck, der reguläre Ausdruck erscheint im Übereinstimmungsfeld an jeder Position, das Muster von
wird übereinstimmen, und es ist nicht erforderlich, auf beiden Seiten ein Platzhalterzeichen einzufügen, um eine Übereinstimmung zu erzielen. Wenn
nur das Platzhalterzeichen für die Übereinstimmung verwendet, stellt das Übereinstimmungsmuster , größer oder gleich dar zu N;
Wie ist der obige Satz zu verstehen?
bedeutet
... Entspricht Daten, die größer oder gleich 3 Zeichen sind
.... Entspricht Daten, die größer oder gleich 4 Zeichen sind# Abfrage der Benutzername mit dem Zeichen l Benutzer beginnend mit: ^l;
#Schreibweise regulärer Ausdrücke
Das obige ist der detaillierte Inhalt vonSo implementieren Sie Fuzzy-Abfragen in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!