Dieser Artikel stellt die Grundkenntnisse des MySQL-Volltextindex unter folgenden Gesichtspunkten vor:
Einige Hinweise zum MySQL-Volltextindex
2 Index
3. Einführung in mehrere Suchtypen
4. Beispiele für mehrere Suchtypen
Mehrere Überlegungen zur Volltextindizierung
1. Die Suche muss in einer Indexspalte vom Typ Volltext erfolgen und die in Übereinstimmung angegebene Spalte muss im Volltext angegeben worden sein
2. Kann nur auf Tabellen angewendet werden, deren Tabellen-Engine MyIsam ist Typ (MySQL 5.6 und höher Kann auch in der Innodb-Tabellen-Engine verwendet werden)
3 Volltextindizes können nur für Spalten der Typen char, varchar und text erstellt werden
4 . Wie bei gewöhnlichen Indizes können Sie auch
nach der Tabellenerstellung hinzufügen oder ändern. Bei einer umfangreichen Datensatzeinfügung handelt es sich um den Prozess des Einfügens von Daten in eine Tabelle ohne Index Das Erstellen eines Index dauert viel schneller als das Einfügen in eine Datentabelle.
6. Die Suchzeichenfolge muss eine konstante Zeichenfolge sein, nicht der Spaltenname der Tabelle.
Wenn Die Selektivität des Suchdatensatzes überschreitet 50 %, es wird davon ausgegangen, dass keine Übereinstimmung vorliegt (Nur eingeschränkt in der natürlichen Suche)
Syntax der Volltextindexsuche
MATCH (列名1, 列名2,…) AGAINST (搜索字符串 [搜索修饰符])
Die in Übereinstimmung 1, 2 usw. angegebenen Spaltennamen sind die beim Erstellen des Volltextindex angegebenen Spaltennamen. Die nachfolgenden Suchmodifikatoren werden wie folgt beschrieben:
search_modifier: { IN NATURAL LANGUAGE MODE | IN NATURAL LANGUAGE MODE WITH QUERY EXPANSION | IN BOOLEAN MODE | WITH QUERY EXPANSION }
Einführung in mehrere Suchtypen
Die oben genannten Suchmodifikatoren veranschaulichen tatsächlich drei Volltextsuchtypen
IM NATÜRLICHEN SPRACHENMODUS
Einführung : Das Standardsuchformular (ohne Suchmodifikator oder der Modifikator ist NATÜRLICH im Fall des SPRACHMODUS)
Funktionen:
Die Zeichen in der Suchzeichenfolge werden in normale Zeichen analysiert und haben keine besondere Bedeutung
Für Zeichenfolgen in der maskierten Zeichenliste Filterung
Wenn die Selektivität eines Datensatzes 50 % überschreitet, wird dies normalerweise als Nichtübereinstimmung betrachtet.
Die zurückgegebenen Datensätze werden sortiert und entsprechend der Relevanz des Datensatzes angezeigt
IM BOOLEAN-MODUS
Einführung: Suche im Booleschen Modus (wenn der Suchmodifikator IM BOOLEAN-MODUS ist)
Funktionen:
analysiert die Bedeutung von Sonderzeichen in der Suchzeichenfolge nach bestimmten Regeln und führt einige logische Regeln aus. Zum Beispiel: Ein bestimmtes Wort muss vorkommen oder darf nicht vorkommen usw.
Die von dieser Art der Suche zurückgegebenen Datensätze werden nicht nach Relevanz sortiert
MIT ABFRAGEERWEITERUNG
Einführung: Eine etwas komplexere Form der Suche, bei der eigentlich zwei natürliche Suchen durchgeführt wurden , das Aufzeichnungen zurückgab, die direkte einleitende sexuelle Beziehungen mit dem Modifikator IN NATURAL LANGUAGE MODE aufzeichnen WITH QUERY EXPANSION oder WITH QUERY EXPANSION modifier
Funktionen: Diese Art der Suche bietet tatsächlich eine indirekte Suchfunktion. Beispiel: Ich suche nach einem bestimmten Wort und die erste zurückgegebene Zeile lautet „Enthält keine Zeichenfolge“. Suchbegriff. Ein zweiter Abgleich kann basierend auf den Datensatzwörtern des ersten Suchergebnisses durchgeführt werden, sodass es möglich ist, übereinstimmende Datensätze mit einigen indirekten Beziehungen zu finden.
Beispiele für mehrere Suchtypen
Anwendung im NATURAL LANGUAGE MODE-Modus:
wird weiterhin auf die Produkttabelle angewendet, in der wir einen Volltextindex im Namen eingerichtet haben Da ich relevante Datensätze in der Namensspalte anhand von Schlüsselwörtern abgleichen muss
Die SQL-Anweisung lautet wie folgt:
SELECT * FROM product WHERE match(name) against(‘auto')
Mehr als 1 W, es dauert 1,15 Sekunden, der Effekt ist immer noch gut
Hinweis: Standardmäßig werden Datensätze basierend auf der Relevanz von hoch nach niedrig zurückgegeben
Wir können match(name) gegen('auto') FROM Produkt auswählen. Überprüfen Sie den Korrelationswert des Datensatz. Die Werte liegen alle zwischen 0 und 1. 0 bedeutet, dass der Datensatz nicht übereinstimmt.
Mehrere wichtige Merkmale:
1. Welche Wörter werden ignoriert?
Der Suchbegriff ist zu kurz Wörter mit mehr als 4 Zeichen. Es ist ein gültiges Wort. Wir können ft_min_word_len in der Konfiguration ändern, um
so zu konfigurieren, dass Wörter in der Vokabularliste blockiert werden. Der Standard-Volltextindex blockiert einige gebräuchliche Wörter. Da diese Wörter zu häufig vorkommen und keine semantische Wirkung haben, werden sie im Suchvorgang ignoriert. Selbstverständlich ist diese Liste auch konfigurierbar.2.
Wie führt man eine Wortsegmentierung durch? Der Volltextindex
betrachtet ein fortlaufendes gültiges Zeichen (den Zeichensatz, der im regulären Ausdruck mit w übereinstimmt) als ein Wort, das auch ein „'“ enthalten kann.
Zwei aufeinanderfolgende ''s werden jedoch als Trennzeichen betrachtet. Andere Trennzeichen wie Leerzeichen, Kommas, Punkte usw.
IM BOOLEAN-MODUS-Anwendung:
Im Boolean-Matching-Modus können wir einige spezielle Symbole hinzufügen und einige logische Funktionen für Suchprozesse hinzufügen. Wie zum Beispiel die auf der offiziellen Website bereitgestellten Beispiele (suchen Sie nach Zeichenfolgen, die MySQL und enthalten). (Ausgenommen Yousql-Anweisungen):
SELECT * FROM articles WHERE MATCH (title,body) -> AGAINST (‘+MySQL -YourSQL' IN BOOLEAN MODE);
Es ist ersichtlich, dass wir mehr Kontrolle über die Suche haben Einige von ihnen sehen „höher“ aus.
Tatsächlich impliziert die obige Operation mehrere Bedeutungen:
Pluszeichen: entspricht und
Minuszeichen: entspricht nichtNein: entspricht oder
Werfen wir einen Blick auf einige wichtige Funktionen der Booleschen Typsuche:
1. 没有50%记录选择性的限制,即使搜索结果记录超过总数的50%也同样返回结果
2. 不会自动的按记录的相关性进行降序排序
3.
可以直接应用在没有创建fulltext的全文索引上,但是这样会查询的非常慢,所以说还是别用了。
4. 支持最小、最大单词长度
5.
应用屏蔽词列表
布尔搜索支持的操作符:
n 加号 +:指示修饰的单词必须出现在记录中
n 减号 -:指示修饰的单词必须不能出现在记录中
n
没有任何操作符:单词可有可无,但是包含该词的记录相关性高
n 双引号 “ : 将一个词组作为一个匹配。如:”one word” 匹配one
word在一起的单词
下面是官方的一些实例:
至少包含一个词的记录 ‘apple banana' 必须包含着两个词 ‘+apple +juice' 必须包含apple,包含macintosh的记录相关性高,也可以不包含 ‘+apple macintosh' 必须包含apple且不能喊有macintosh ‘+apple -macintosh' 查找apple开头单词的记录 ‘apple*' 完整匹配some words单词 ‘”some words”‘
了解了基本的mysql全文索引知识,觉得它的全文索引比like当然是强了很多。但是面对高级的搜索还是略显简陋,且性能问题也是担忧。
以上就是MySQL全文索引应用简明教程的内容,更多相关文章请关注PHP中文网(www.php.cn)!