MySQL Boolean Full-Text Searches

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)

mysql boolean tex searches - nazwa produktu ze słowem kluczowym Truck
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 tex searches with Boolean operator

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 indeks FULLTEXT. 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