Fulltext a SQL Server 2005

Tomáš Herceg       25. 5. 2007       SQL, Offtopic, Databáze       8162 zobrazení

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.

 

hodnocení článku

3 bodů / 3 hlasů       Hodnotit mohou jen registrované uživatelé.

 

Nový příspěvek

 

Diskuse: Fulltext a SQL Server 2005

Mám dotaz, existuje i český fulltext do SQL Serveru 2008?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Diskuse: Fulltext a SQL Server 2005

Hi guys

I have need to use fulltext search for czech language.

Can anybody help me, how to install czech language support in sql server?

(czech word breakers)

regards

Tom

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Hello Tom,

You can download word breakers for example from our site

http://www.karsa.eu/files/StemmerCZSK.zi...

CZSK word breakers is too part Karsa full-text search manager.

Hope it can help you

Michal

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Diskuse: Fulltext a SQL Server 2005

a jak hledat a najit pokud nekdo zada klicove slovo bez diakritiky?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

To by měl snad SQL server umět sám. Dokonce prý umí i skloňování, alespoň trochu. Stačí doinstalovat český stemmer.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Prave ted resim stejny problem, bohuzel SQL fulltext vypada ze ceskou diakritiku moc nebere, staci si pustit priklad tady na webu - pokud vyhledate podle fraze: setřídit , fulltext vrati spoustu vysledku, zatimco pokud se zada: setridit , nenajde to ani jeden zaznam.

Z me zkusenosti nefunguje ani trik co jde tusim pouzit u LIKE operatoru, t.j. dat znaky mezi [ a ] a SQLko pak veme obe moznosti: set[rř][ií]dit .

Pokud by nekdo vedel jak tento problem vyresit, byl bych velmi vdecny.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Diskuse: Fulltext a SQL Server 2005

Bohužel se nyní po kliknutí na zmíněný odkaz neotevře stahování, ale bohužel jen něco ve stylu Microsoftské 404ky. Nešlo by tu češtinu uploadovat přímo na VB.NET?... Děkuji

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Problém je v tom, že já jsem tu češtinu nedávno potřeboval a uloženou jsem ji nikde neměl, takže jsem ji také nestáhnul.

Za druhé rozhodně nemůžu zveřejňovat něco, co bylo z jakéhokoliv důvodu staženo a zrušeno.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Kdo hledá, najde. Český a slovenský jazykový modul pro fulltextové funkce v serverových produktech společnosti Microsoft - http://www.microsoft.com/downloads/detai...

nahlásit spamnahlásit spam 0 odpovědětodpovědět

To je přesně ono.

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.

Nyní zakládáte pod článkem nové diskusní vlákno.
Pokud chcete reagovat na jiný příspěvek, klikněte na tlačítko "Odpovědět" u některého diskusního příspěvku.

Nyní odpovídáte na příspěvek pod článkem. Nebo chcete raději založit nové vlákno?

 

  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:  
Heslo:  

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback