1. Přečetl jsem pár dobrých příspěvků,
Přehled plnotextového vyhledávání SQL Server 2008 http://www.cnblogs.com/galaxyyao/archive/2009/02/13/1390139.html
Plnotextový rejstřík http://www.cnblogs.com/liulun/articles/1368655.html
Nejprve si opište odstavec:
Otázka: Proč fulltextové vyhledávání? Odpověď: Protože rychlost dotazování textu je pomalá (nedoporučuje se budovat index na textu, což je důvod) Otázka: Je nějaký rozdíl oproti roku 2005? A; Samozřejmě existuje rozdíl a název předchází integrované. Dříve měl 05 samostatný indexový soubor a engine, ale v 08 byl integrován do souborové skupiny. Otázka: Jaký je princip? Odpověď: Na základě klíčových slov Otázka: Jak to souvisí s běžnými indexy? Odpověď: Účelem je zlepšit rychlost dotazů. Indexy s plným textem mají mnoho stejných vlastností jako indexy Full-textové vyhledávání využívá sémantické vyhledávání (tato technika zní velmi propracovaně) a může být použito i pro binární dokumenty. Otázka: K čemu to je? Odpověď: Pro nejjednodušší příklad lze uvést vyhledávání článků, fuzzy matching, rychlé a velké množství také mohou být řazené.
Dva. Pak jdi na MSDN a podívej se na Dongdong:
Přehled celého textu indexu
http://msdn.microsoft.com/zh-cn/library/cc879306.aspx
Některé z následujících citací jsou převzaty následovně:
1. V SQL Server 2008 je fulltextový engine plně integrován do databázového enginu. Fulltextový engine je nyní v procesu SQL Serveru (sqlservr.exe) místo samostatného procesu (msftesql.exe). Integrací fulltextového enginu do databázového enginu se zlepšuje spravovatelnost fulltextu, optimalizují se hybridní dotazy a zlepšuje se celkový výkon. Od: http://msdn.microsoft.com/zh-cn/library/ms142587.aspx
2. Kroky vytvoření fulltextového vyhledávání, jsem příliš líný dělat screenshoty, vidět, že to udělali i ostatní, citovat přímo, ale od druhé stránky je to jiné než moje lokální stránka, nemohu přímo pravým kliknutím kliknout na tabulku a vytvořit fulltextové vyhledávání, výchozí je šedé, index mohu vytvořit pouze v katalogu fulltextového indexu v paměti. http://www.sql-server-performance.com/2010/full-text-search-2008/
3. Nejprve jsem si myslel, že adresář pro vyhledávání v plném textu by měl být adresář na příslušném pevném disku, což je podobné konceptu locune. Ve skutečnosti je však od SQL Server 2008 plnotextový adresář virtuální objekt a nepatří do žádné souborové skupiny. Obsah s plným textem je logický pojem, který představuje sadu indexů s plným textem. Zdroj:
http://msdn.microsoft.com/zh-cn/library/ms142497.aspx
4. Index v plném textu lze vytvořit pouze pro tabulkový nebo indexový pohled, ale ne pro běžný pohled index celého textu.
Fulltextový index je speciální typ funkčního indexu založeného na značkách, který je generován a udržován fulltextovým enginem. Pro vytvoření fulltextového vyhledávání v tabulce nebo zobrazení musí mít tabulka nebo pohled jedinečný, nenulovatelný index v jednom sloupci. Fulltextový engine musí použít tento jedinečný index k mapování každého řádku v tabulce na jedinečný komprimovatelný klíč. Indexy s plným textem mohou zahrnovat sloupce Char, Varchar, Nchar, Nvarchar, Text, Ntext, Image, XML, Varbinary a Varbinary(max).
5. Pro vytvoření plnotextového indexu v Tabulce A existuje předpoklad, tedy že musí být alespoň jeden unikátní index v Tabulce A, tedy pokud v Tabulce A není žádný index, nechcete vytvářet plnotextový index v Tabulce A.
V 6.SQL Server 2008 je velikost indexu plného textu omezena pouze dostupnými paměťovými zdroji počítače, na kterém běží instance SQL Serveru. http://msdn.microsoft.com/zh-cn/library/cc879306.aspx
7. Dotazovat se do více sloupců (fulltextové vyhledávání) Zadáním seznamu sloupců pro vyhledávání můžete dotazovat více sloupců pomocí predikátu CONTAINS. Tyto sloupce musí být ze stejné tabulky.
Použijte závorky, VYBERTE jméno, Barva Z produkce.produktu KDE OBSAHUJE((Název, Barva), 'Červená');
Nebo použijte znak *, VYBERTE název, Barva Z Production.Product WHERE CONTAINS(*, 'Red');
Zdroj: http://msdn.microsoft.com/zh-cn/library/ms142488.aspx
9. Dotazujte více sloupců pro více tabulek
Může pouze OBSAHOVAT nebo OBSAHOVAT, například KDE OBSAHUJE(t1. Název, 'Red') nebo OBSAHUJE(t2. Jméno, 'Red');
10. Optimalizoval výkon plnotextových dotazů
Použijte ALTER FULLTEXT CATALOG REORGANIZE k reorganizaci katalogu plného textu.
PŘESTAVBA KATALOGU S PLNOTEXTOVÝM KATALOGEM pro zákazníka s ACCENT_SENSITIVITY=VYPNUTO
Pro více informací se podívejte na toto: http://msdn.microsoft.com/zh-cn/library/cc879244.aspx
11. Proveďte vyhledávání pomocí prefixu http://msdn.microsoft.com/zh-cn/library/ms142492.aspx
Full-textové vyhledávání můžete použít k vyhledávání slov nebo frází s určenou předponou.
Když provedete vyhledávání v prefixu, všechny položky ve sloupci obsahujícím text začínající na zadanou předponu se vrátí. Například pro vyhledávání všech řádků obsahujících prefix top (například topple, topping a top itself) by dotaz vypadal takto:
VYBERTE * Z produktu KDE OBSAHUJE (ProductName, '"auto*"' ); Veškerý text, který odpovídá textu uvedenému před hvězdičkou (*), bude vrácen.
Poznámka: Pokud nepřidáte dvojité uvozovky před a za text a hvězdičku (např. OBSAHUJE (DEscrip{filter}tION, 'top*')), vyhledávání v plném textu nebude hvězdičku používat jako zástupnou kartu.
Když je prefixem fráze, každý token, který frázi tvoří, je považován za samostatný prefix. Všechny řádky obsahující slova začínající těmito předponami jsou vráceny. Například předpona "light bread*" bude hledat řádky s textem "light breaded", "lightly breaded" (lehce obalovaný) (lightly breaded) (lehce obalovaný) nebo "light bread", ale nevrátí "Lehce opečený chléb".
|