sql >> Databáze >  >> RDS >> Mysql

Vyhledávání pomocí zástupných znaků ve fulltextovém vyhledávání MySQL

Bohužel to nemůžete udělat pomocí fulltextového indexu MySQL. Nemůžete načíst '*nited states' okamžitě z rejstříku, protože levé znaky jsou nejdůležitější částí rejstříku. Nicméně můžete hledejte 'United Sta*' .

// the only possible wildcard full-text search in MySQL
WHERE MATCH(column) AGAINST ('United Sta*' IN BOOLEAN MODE)

Plný text MySQL funguje nejlépe při hledání celých slov ve větách – i to může být někdy na hovno. V opačném případě bych navrhoval použít externí fulltextový engine, jako je Solr nebo Sphinx . Myslím, že Sphinx umožňuje zástupné znaky předpony a přípony, u ostatních si nejsem jistý.

Můžete se vrátit k MySQL LIKE klauzule, ale opět spouštění dotazů jako LIKE '%nited states' nebo LIKE '%nited Stat%' , bude také trpět na výkonu, protože nemůže použít index na prvních několika znacích. 'United Sta%' a 'Unit%States' jsou v pořádku, protože index lze použít proti první skupině známých znaků.

Další docela zásadní námitka při použití fulltextového indexování MySQL je seznam stop-slov a nastavení minimální délky slova . Například v prostředí sdíleného hostingu budete omezeni na slova větší nebo rovna 4 znakům. Takže hledání „Goo“ pro získání „Google“ by selhalo. Seznam ignorovaných slov také nepovoluje běžná slova jako „a“, „možná“ a „mimo“ – ve skutečnosti je dohromady 548 zastavovacích slov! Opět platí, že pokud nepoužíváte sdílený hosting, lze tato nastavení poměrně snadno upravit, ale pokud ano, budete se s některými výchozími nastaveními zlobit.




  1. Nainstalovat mysql-python (Windows)

  2. Jak funguje @@MAX_CONNECTIONS na serveru SQL Server

  3. Jak přejmenovat databázi v SQL Server - SQL Server / TSQL výukový program, část 26

  4. Výběr náhodných řádků pomocí MySQL