JanKoWeb: Tvorba webu - SQL: fulltextové vyhledávání na stránkách
jankoweb.wz.cz
Den filosofie, televize a světový den pozdravů.


SQL: fulltextové vyhledávání na stránkách

V tomto článku se zaměřím na možnosti fulltextového vyhledávání na vlastních stránkách.

Vlastní kód

Pokud máte stránky s databází, je asi nejlepší naprogramovat si vyhledávání vlastní. Velmi pěkně o tom pojednává třeba článek PHP MySQL: Vyhledávání nebo Fulltextové vyhledávání v MySQL.

Jen doplním, že pokud budete atribut fulltext do databáze přidávat pomocí phpMyAdmina, musí se klíč přidat pro každý požadovaný sloupec zvlášť (pokud třeba máte sloupce text, úvod, titulek a chcete je každý zvlášť indexovat, když v phpMyAdminu zaškrtnete všechny tři a dáte přidat fulltext, udělá se z nich jeden klíč a pokud použijete postup podobný článku výše, patrně se záhy setkáte s chybovým hlášením "Can't find FULLTEXT index matching the column list").

Nevýhodou je, že je to trochu více práce a třídění opravdu relevantní dá docela zabrat. Nadruhou stranu se Vám nestane, že nenajdete článek, který jste právě vydali.

Ukázka

Já si třeba udělal takového vyhledávání:

$query = "
SELECT title,intro,content,tags,
( 
 3*MATCH(title) AGAINST('".$search."' IN BOOLEAN MODE)
 + MATCH(intro) AGAINST('".$search."' IN BOOLEAN MODE)
 + MATCH(content) AGAINST('".$search."' IN BOOLEAN MODE) 
 + 2*MATCH(tags) AGAINST('".$search."' IN BOOLEAN MODE)
) 
 AS relevance 
FROM articles
WHERE 
 MATCH(title) AGAINST('".$search."' IN BOOLEAN MODE)
  OR MATCH(intro) AGAINST('".$search."' IN BOOLEAN MODE)
  OR MATCH(content) AGAINST('".$search."' IN BOOLEAN MODE)
  OR MATCH(tags) AGAINST('".$search."' IN BOOLEAN MODE)
ORDER BY relevance DESC
LIMIT 10
";
kde předpokládám hledaný výraz v proměnné $search.

BOOLEAN MODE umožňuje pokročilejší vyhledávání pomocí speciálních znaků, viz manuál.

Všimněte si sloupce, který si pojmenovávám relevance - ten bude obsahovat váženou relevanci výsledků (titulek bude mít největší váhu, 3, potom tagy, text a úvod bude mít váhu jedničkovou). Není to samozřejmě normované, je to jen příklad, jak jsem si to pro sebe udělal já.

Okrajem jen zmíním, že výše uvedený kód je smyšlený:-)

Google

Asi nejjednodušší je vložit na své stránky vyhledávání pomocí Googlu. Je tto vcelku rychlé, ale pokud si Vaše stránky na indexech Googlu nestojí moc dobře, může se Vám stát, že výsledky budou dost nepřesné a nové články se v nich projeví až za dlouho.

Vytvoření vlastního vyhledávání Google.

Seznam

V našich končinách jsou někdy stránky lépe indexovány Seznamem. Já třeba používám vyhledávání směrované právě na vyhledávač Seznamu.

V době, kdy jsem psal "parazitní" formulář, jak tomu říkal Yuhů, ptal jsem se na technické podpoře Seznamu a tam mi řekli, že to tak udělat mohu a že časem také chystají spuštění podobné služby, jako má Google, aby to bylo pohodlnější i pro více amatérské tvůrce webu.

A čas se naplnil, takže můžete využít i Vlastní vyhledávání od Seznamu.

Rubrika Tvorba webu | Tagy Fulltext, Sql, Vyhledávání | Po 21.03.2011 | 4804x

Náhodné články

Tento web jsem zakládal na střední, v roce 2008. Je zde hlavně archiv mé tvorby.

Aktuální věci publikuji kvůli úspoře času na Twitter.

Honza

"Náš blahobyt nespočívá v tom, co máme, ale v tom, co nás těší."

J. Petit-Senn