Logické fulltextové vyhledávání v MySQL

Shrnutí: v tomto kurzu se naučíte provádět logické fulltextové vyhledávání v MySQL. Kromě toho se naučíte používat logické operátory k vytváření velmi složitých vyhledávacích dotazů.

Úvod do logického fulltextového vyhledávání v MySQL

Kromě fulltextového vyhledávání v přirozeném jazyce podporuje MySQL další formu fulltextového vyhledávání, která se nazývá logické fulltextové vyhledávání. V booleovském režimu MySQL vyhledává slova místo pojmů jako při vyhledávání v přirozeném jazyce.

MySQL umožňuje provádět fulltextové vyhledávání na základě velmi složitých dotazů v booleovském režimu spolu s booleovskými operátory. Proto je fulltextové vyhledávání v booleovském režimu vhodné pro zkušené uživatele.

Chcete-li provést fulltextové vyhledávání v booleovském režimu, použijte modifikátor IN BOOLEAN MODE ve výrazu AGAINST. Následující příklad ukazuje, jak vyhledat produkt, jehož název produktu obsahuje slovo Truck.

Code language: SQL (Structured Query Language) (sql)

mysql boolean tex searches - product name with the keyword Truck
Vrátí se dva produkty, jejichž názvy obsahují slovo Truck.

Chcete-li najít produkt, jehož názvy produktů obsahují slovo Truck, ale nikoli řádky, které obsahují slovo Pickup , můžete použít booleovský operátor exclude ( - ), který vrátí výsledek vylučující klíčové slovo Pickup jako následující dotaz:

Code language: SQL (Structured Query Language) (sql)
mysql boolean tex vyhledává pomocí booleovského operátoru

MySQL Boolean fulltext search operators

Následující tabulka znázorňuje booleovské operátory fulltextového vyhledávání a jejich význam:

Operátor Popis
+ Include, slovo musí být přítomno.
Vyloučit, slovo nesmí být přítomno.
> Vložit a zvýšit hodnotu hodnocení.
< Vložit a snížit hodnotu hodnocení.
() Seskupit slova do podvýrazů (což umožňuje jejich zahrnutí, vyloučení, hodnocení atd. jako skupiny).
~ Zmenšit hodnotu hodnocení slova.
* Vildcard na konci slova.
„“ Definuje frázi (na rozdíl od seznamu jednotlivých slov se pro zařazení nebo vyloučení porovnává celá fráze).

Následující příklady ilustrují použití logických fulltextových operátorů ve vyhledávacím dotazu:

Pro vyhledání řádků, které obsahují alespoň jedno ze dvou slov: mysql nebo tutorial

‚mysql tutorial‘

Pro vyhledání řádků, které obsahují obě slova: mysql a tutorial

‚+mysql +tutorial‘

Pro vyhledání řádků, které obsahují slovo „mysql“, ale vyšší hodnocení dát řádkům, které obsahují „tutorial“:

‚+mysql tutorial‘

To search for rows that contain the word „mysql“ but not „tutorial“

‚+mysql -tutorial‘

To search for rows that contain the word „mysql“ and rank the row lower if it contains the word „tutorial“.

‚+mysql ~tutorial‘

Pro vyhledání řádků, které obsahují slova „mysql“ a „tutorial“ nebo „mysql“ a „training“ v libovolném pořadí, ale řádky, které obsahují „mysql tutorial“, zařadí výše než „mysql training“.

‚+mysql +(>tutorial <training)‘

Pro vyhledání řádků, které obsahují slova začínající na „my“, například „mysql“, „mydatabase“ apod, použijete následující:

‚my*‘

Hlavní vlastnosti booleovského fulltextového vyhledávání v MySQL

  • MySQL při booleovském fulltextovém vyhledávání automaticky neřadí řádky podle relevance sestupně.
  • Pro provádění booleovských dotazů vyžadují tabulky InnoDB, aby všechny sloupce MATCHvýrazu měly FULLTEXTindex. Všimněte si, že tabulky MyISAM toto nevyžadují, i když je vyhledávání poměrně pomalé.
  • MySQL nepodporuje více booleovských operátorů na vyhledávacím dotazu v tabulkách InnoDB, např. ‚++mysql‘. MySQL v takovém případě vrátí chybu. MyISAM se však chová jinak. Ostatní operátory ignoruje a použije operátor, který je nejblíže hledanému slovu, například z ‚+-mysql‘ se stane ‚-mysql‘.
  • InnoDB fulltextové vyhledávání nepodporuje koncové znaménko plus (+) nebo minus (-). Podporuje pouze úvodní znaménko plus nebo minus. MySQL ohlásí chybu, pokud je hledané slovo ‚mysql+‘ nebo ‚mysql-‚. Kromě toho jsou následující vedoucí plus nebo minus se zástupným znakem neplatné:
  • Prahová hodnota 50 % znamená, že pokud se slovo objeví ve více než 50 % řádků, MySQL ho bude ve výsledku vyhledávání ignorovat.

V tomto návodu jste se naučili provádět logické fulltextové vyhledávání v MySQL s mnoha užitečnými logickými operátory.

  • Pomohl vám tento návod?
  • AnoNe

.