Podsumowanie: W tym poradniku dowiesz się jak wykonywać MySQL Boolean Full-Text Searches. Dodatkowo, dowiesz się jak używać operatorów Boolean do tworzenia bardzo złożonych zapytań.
Wprowadzenie do wyszukiwania pełnotekstowego MySQL Boolean
Poza wyszukiwaniem pełnotekstowym w języku naturalnym, MySQL wspiera dodatkową formę wyszukiwania pełnotekstowego, która jest nazywana wyszukiwaniem pełnotekstowym Boolean. W trybie Boolean, MySQL wyszukuje słowa zamiast pojęć jak w przypadku wyszukiwania w języku naturalnym.
MySQL pozwala na wykonywanie wyszukiwania pełnotekstowego na podstawie bardzo złożonych zapytań w trybie Boolean wraz z operatorami Boolean. Z tego powodu wyszukiwanie pełnotekstowe w trybie Boolean jest odpowiednie dla doświadczonych użytkowników.
Aby wykonać wyszukiwanie pełnotekstowe w trybie Boolean, należy użyć modyfikatora IN BOOLEAN MODE
w wyrażeniu AGAINST
. Poniższy przykład pokazuje, jak wyszukać produkt, którego nazwa produktu zawiera słowo Truck
.
Code language: SQL (Structured Query Language) (sql)
Wracane są dwa produkty, których nazwy produktów zawierają słowo Truck
.
Aby znaleźć produkt, którego nazwy produktów zawierają słowo Truck
, ale nie zawierają żadnych wierszy, które zawierają Pickup
, można użyć operatora boolean exclude ( -
), który zwraca wynik wykluczający słowo kluczowe Pickup
, tak jak w przypadku poniższego zapytania:
Code language: SQL (Structured Query Language) (sql)
MySQL Boolean operatory wyszukiwania pełnotekstowego
Następująca tabela ilustruje operatory Boolean wyszukiwania pełnotekstowego i ich znaczenia:
Operator | Opis |
---|---|
+ | Włącz, słowo musi być obecne. |
– | Wyłącz, słowo nie może być obecne. |
> | Włącz, i zwiększ wartość rankingową. |
< | Włącz, i zmniejsz wartość rankingową. |
() | Grupuje słowa w podwyrażenia (umożliwiając ich uwzględnienie, wykluczenie, uszeregowanie i tak dalej jako grupy). |
~ | Zaniża wartość rankingową słowa. |
* | Wildcard na końcu słowa. |
„” | Definiuje frazę (w przeciwieństwie do listy pojedynczych słów, cała fraza jest dopasowywana w celu włączenia lub wykluczenia). |
Następujące przykłady ilustrują sposób użycia operatorów boolean full-text w zapytaniu wyszukiwania:
Aby wyszukać wiersze, które zawierają co najmniej jedno z dwóch słów: mysql lub tutorial
’mysql tutorial’
Aby wyszukać wiersze, które zawierają oba słowa: mysql i tutorial
’+mysql +tutorial’
Aby wyszukać wiersze, które zawierają słowo „mysql”, ale umieścić wyższą rangę dla wierszy, które zawierają „tutorial”:
’+mysql tutorial’
Aby wyszukać wiersze, które zawierają słowo „mysql”, ale nie „tutorial”
’+mysql -tutorial’
Aby wyszukać wiersze, które zawierają słowo „mysql” i umieścić niższą rangę wiersza, jeśli zawiera on słowo „tutorial”.
’+mysql ~tutorial’
Żeby wyszukać wiersze, które zawierają słowa „mysql” i „tutorial” lub „mysql” i „training” w dowolnej kolejności, ale umieścić wiersze, które zawierają „mysql tutorial” wyżej niż „mysql training”.
’+mysql +(>tutorial <training)’
Aby znaleźć wiersze, które zawierają słowa zaczynające się od „my”, takie jak „mysql”, „mydatabase”, etc., użyj następującego wyrażenia:
’my*’
Główne cechy pełnotekstowego wyszukiwania boolean w MySQL
- MySQL nie sortuje automatycznie wierszy według ważności w porządku malejącym w pełnotekstowym wyszukiwaniu boolean.
- Aby wykonać zapytanie boolean, tabele InnoDB wymagają, aby wszystkie kolumny wyrażenia
MATCH
posiadały indeksFULLTEXT
. Zauważ, że tabele MyISAM tego nie wymagają, aczkolwiek wyszukiwanie jest dość powolne. - MySQL nie obsługuje wielu operatorów logicznych w zapytaniu wyszukiwania na tabelach InnoDB, np. '++mysql’. MySQL zwróci błąd, jeśli to zrobisz. Jednakże, MyISAM zachowuje się inaczej. Ignoruje inne operatory i używa operatora, który jest najbliższy szukanemu słowu, na przykład '+-mysql’ stanie się ’-mysql’.
- Wyszukiwanie pełnotekstowe w InnoDB nie obsługuje końcowego znaku plus (+) lub minus (-). Obsługuje on tylko wiodący znak plusa lub minusa. MySQL zgłosi błąd, jeśli szukane słowo to 'mysql+’ lub 'mysql-’. Dodatkowo, następujące znaki plus lub minus są niepoprawne: +*, +-
- Próg 50% oznacza, że jeśli słowo pojawi się w więcej niż 50% wierszy, MySQL zignoruje je w wynikach wyszukiwania.
W tym poradniku dowiedziałeś się, jak wykonywać pełnotekstowe wyszukiwania logiczne MySQL z użyciem wielu przydatnych operatorów logicznych.
- Czy ten poradnik był pomocny?
- TakNie