Dnes jsem si trochu pohrál s Microsoft SQL Server 2005 a na tomto webu se rozběhlo fulltextové vyhledávání. Použití fulltextu je v MS SQL Server 2005 velice jednoduché. Nejprve musíme vytvořit fulltextový katalog. Pak již jen jednoduše připravíme indexování jednotlivých sloupců tabulek. Vše je snadné a rychlé. Zde je příklad:
CREATE FULLTEXT CATALOG FulltextSearch WITH ACCENT_SENSITIVITY=ON AS DEFAULT
CREATE FULLTEXT INDEX ON [Articles] ([ArticleText] LANGUAGE 'Czech') KEY INDEX [PK_Articles]
Pokud používáte pro dlouhé texty datový typ text, doporučuji jej změnit na varchar(max). Lze to provést i na existující tabulce bez ztráty dat.
Pokud chceme provést jednoduchý dotaz, stačí nám tento příkaz, který v tabulce fulltextově vyhledá slovo příkaz:
SELECT * FROM [Articles] WHERE FREETEXT([ArticleText], 'příkaz')
Fulltext funguje i pokud tabulka obsahuje HTML, tagy se odfiltrují. Podporovány by měly být i různé další typy obsahu, což ovšem na tomto webu nevyužíváme.
Často se hodí zjistit, jakou má daný záznam relevanci a jak je tedy setřídit. V tom případě máme pseudo-tabulku FreeTextTable, která obsahuje sloupce KEY (primární klíč) a RANK (hodnocení - hodnota od 0 do 1000). Stačí tedy jednoduchý join a máme setříděno podle relevance:
SELECT * FROM [Articles] INNER JOIN FreeTextTable([Articles], [ArticleText], 'příkaz') [ft] ON [Articles].[ArticleId] = [ft].[KEY]
Jediné, co nevím, je, jak se dají nalezené výskyty zvýraznit (resp. zjistit pozici nalezeného výrazu přímo v databázi).
Doporučuji také stáhnou češtinu pro fulltext, aby fungovalo české a slovenské ohýbání slov, podpora diakritiky apod.