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)
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 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
MATCH
výrazu mělyFULLTEXT
index. 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
.