Download presentation
Presentation is loading. Please wait.
1
資料庫系統專題課程 期末報告 --- 全文檢索搜尋
資料庫系統專題課程 期末報告 --- 全文檢索搜尋 指導老師:黃三益教授 D 曾智義 Paul D 唐 筠 Tiffany
2
Paul, Tiffany @ NSYSU MIS
Agenda 摘要 導論 全文檢索概念 資料庫設計與全文檢索 SQL Server 2008 全文檢索搜尋 SQL Server全文檢索服務相關實作 2009/01/10 Paul, NSYSU MIS
3
Paul, Tiffany @ NSYSU MIS
摘要1 資訊無所不在的環境,相對的也產生大量的知識、資訊、檔案與文件 在以服務精神為導向與以使用者為中心的思維中,如何在大量的文件檔案中快速的找到需求的資訊與知識,如何提供完整且精確的檢索方式達到使用者需求,是一個值得探討的議題 2009/01/10 Paul, NSYSU MIS
4
摘要2 本專案計畫擬由全文檢索基本概念和需求為基礎,簡單介紹與全文索引有關的議題 斷詞 ( word segmentation )
語幹處理 (stemming ) 符素解析器 ( token parser ) 召回率 ( recall rate ) 反向索引 ( inverted index ) 精確率 (precision ) 彙整常用的全文檢索應用程式及全文檢索目前的應用 實作案例 : SQL 2008 為技術與實作範例 2009/01/10 Paul, NSYSU MIS
5
Paul, Tiffany @ NSYSU MIS
摘要3 專案計畫的貢獻 由概念到技術實作與相關應用中,彙整全文檢索相關知識,提供一個完整性的介紹 2009/01/10 Paul, NSYSU MIS
6
Paul, Tiffany @ NSYSU MIS
導論1-何謂全文檢索 全文檢索(Full Text Searching) 在大量的文章裡找出某一段文字的方法 從早期的循序搜尋(Sequential Searching),到現在的索引搜尋(Index Searching)都是為了能更快速更有效率的執行尋找比對的工作 全文檢索系統中,首重索引結構(Index Structure) 因為索引的結構除了影響索引建立的時間和索引檔的大小外更影響了查詢的速度。 2009/01/10 Paul, NSYSU MIS
7
Paul, Tiffany @ NSYSU MIS
導論2-全文檢索重要技術 全文檢索基本上是搜尋引擎的核心 當資料 ( 可能是文件、檔案或是網頁等 ) 被抓回硬碟中儲存之後,就可以利用全文檢索的機制進行檢索,其主要的技術有兩項 : 索引系統:建立檢索時使用的索引,使系統能在一兩次的硬碟存取後就查到資料 查詢系統:利用索引系統查詢資料後,將查到的資料呈現在顯示介面 (例如:網頁) 上 2009/01/10 Paul, NSYSU MIS
8
Paul, Tiffany @ NSYSU MIS
導論3-搜尋引擎和全文檢索主要區別 數據量 內容相關性 安全性 個性化和智慧化 2009/01/10 Paul, NSYSU MIS
9
Paul, Tiffany @ NSYSU MIS
全文檢索概念1-全文檢索的方法 全文檢索的方法主要分為 依照「字」進行 依照「字」檢索是指對於文章中的每一個字都建立索引,檢索時將詞分解為字的組合 對於各種不同的語言而言,字有不同的含義檢索 依照「詞」進行檢索兩種 2009/01/10 Paul, NSYSU MIS
10
Paul, Tiffany @ NSYSU MIS
全文檢索概念2-全文檢索系統架構示意圖 2009/01/10 Paul, NSYSU MIS
11
全文檢索概念3-語幹還原 ( stemming )
英文字彙中,動詞有原形、過去式、進行式、完成式的變化,名詞會有單複數的變化,而副詞有可能是由形容詞變化而來 為了達到字彙的精簡以利檢索,所以採用stemming的技術,stemming會把字彙還原成語幹的形式 例如:starting, starts, started都會被還原成start。 2009/01/10 Paul, NSYSU MIS
12
全文檢索概念4-單元剖析 ( token parser )
將符合既定文法(grammar)的文字轉換成結構化 進行全文檢索之前,將「詞」視為最小單位,即所謂的token,然後透過一些相關規則語演算法等進行編譯,將token轉化為特定的資料結構 2009/01/10 Paul, NSYSU MIS
13
全文檢索概念5-斷詞 ( word segmentation )
對於英文而言,詞語詞之間是以空白做為間隔分開,而中文是以字為單位,句子中所有的字連起來才能描述一個意思 英文句子「I am a student」 用中文敘述則為「我是一個學生」。電腦可以很簡單通過空格知道student是一個單詞,但是無法直接知道「學」、「生」兩個字合起來才表示「學生」一個詞。把中文的句子切分成有意義的詞,稱為中文分詞。 2009/01/10 Paul, NSYSU MIS
14
全文檢索概念6-1 -反向索引 ( inverted index )
一種索引結構 儲存了單詞與單詞它們自己本身在一個或多個文檔中所在位置之間的映射 反向索引通常利用關聯陣列實現,在全文檢索中,反向索引扮演重要角色 它擁有兩種表現形式: inverted file index,其表現形式為 {單詞,單詞所在文檔的ID} full inverted index,其表現形式為 {單詞,(單詞所在文檔的ID,在具體文檔中的位置)} 2009/01/10 Paul, NSYSU MIS
15
全文檢索概念6-2 -反向索引 ( inverted index )實例
假設有三個文檔: T0 = "it is what it is" T1 = "what is it" T2 = "it is a banana" 採用inverted file index "a": {2} "banana": {2} "is": {0, 1, 2} "it": {0, 1, 2} "what": {0, 1} 採用full inverted index "a": {(2, 2)} "banana": {(2, 3)} "is": {(0, 1), (0, 4), (1, 1), (2, 1)} "it": {(0, 0), (0, 3), (1, 2), (2, 0)} "what": {(0, 2), (1, 0)} 2009/01/10 Paul, NSYSU MIS
16
全文檢索概念7-1 -召回率 ( recall rate ) 與精確度( precision )
好的檢索系統檢索到的相關文件檔越多越好,不相關文件檔越少越好 召回率和精確度是衡量資訊檢索系統性能最重要的參數 召回率R:用檢索到相關文件檔數作為分子,所有相關文件檔總數作為分母 精確度P: 用檢索到相關文件檔數作為分子,所有檢索到的文件檔總數作為分母 2009/01/10 Paul, NSYSU MIS
17
全文檢索概念7-2 -召回率 ( recall rate ) 與精確度( precision )
系統檢索到的相關文件檔(A) 系統檢索到的不相關文件檔(B) 相關但是系統沒有檢索到的文件檔(C) 相關但是被系統檢索到的文件檔(D) 相關 不相關 檢索到 A B 未檢索到 C D R=A/(A+C) P=A/(A+B) 2009/01/10 Paul, NSYSU MIS
18
全文檢索概念7-3 -召回率 ( recall rate ) 與精確度( precision )
一個資料庫有500個文件檔, 其中有50個文件檔符合定義的問題。系統檢索到75個文件檔,但是只有45個符合定義的問題 召回率 R=45/50=90% 精確度 P=45/75=60% 本例中,系統檢索是比較有效的,召回率為90%。但是結果對一位使用者而言,並非其所需求的,因為有近一半的檢索結果是不相關 研究表明:在不犧牲精確度的情況下,獲得一個高召回率是很困難的。召回率越高,精確度下降的很快,而且這種趨勢不是線性的 2009/01/10 Paul, NSYSU MIS
19
Paul, Tiffany @ NSYSU MIS
資料庫設計與全文檢索 對於處理大量資料而言,資料庫設計大概分為三類 以”文檔”結構搭配不同的索引方法 關聯式資料庫管理系統(RDBMS) 原生性XML資料庫 2009/01/10 Paul, NSYSU MIS
20
常見全文檢索應用系統1-1 - IBM OmniFind Yahoo! Edition
使用平台 跨平台支援 ( 32 位元的 Linux 與 Windows 都支援 ) 搜尋引擎 OmniFind Yahoo! Edition 是 IBM 與 Yahoo! 公司合作開發的搜尋軟體 語言 多國語言 介面 API介面,搜尋功能整合既有系統 索引建立 有下列三種方式: 直接針對檔案系統建立索引 透過 Web Crawler (Spider) 直接對特定網址進行全站檢索 可透過 API 進行文件索引 同義字 支援同義字,並可匯入、匯出 官方網址 2009/01/10 Paul, NSYSU MIS
21
常見全文檢索應用系統1-2 - IBM OmniFind Yahoo! Edition
IBM Omnifind Yahoo! Edition and C# 建立搜尋索引參考範例 Searching(建立搜尋索引) 建立XML與索引文字庫到aspx網頁 <asp:TextBox runat="server" ID="txtSearch" /><br><br> <asp:Xml runat="server" TransformSource="~/search.xsl" EnableViewState="false" ID="xmlSearch" /> 建立查詢字串,強化搜尋能力 string strSearch = txtSearch.Text; string strRequest = " + strSearch + "&collection=Default"; 將找到和讀到的結果回傳 string strResults = ""; strResults = new System.Net.WebClient().DownloadString(strRequest); xmlSearch.DocumentContent = strResults; 2009/01/10 Paul, NSYSU MIS
22
常見全文檢索應用系統2-1 - Lucene.NET
性質 是一個全文索引引擎工具包 索引架構 Lucene 使用各種解析器對各種不同類型的文檔進行解析,例如對於 HTML 文檔。HTML 解析器會做一些預處理的工作,例如:過濾文檔中的 HTML 標籤等等。HTML 解析器的輸出的是文本內容,接著 Lucene 的分詞器(Analyzer)從文本內容中提取出索引項目以及相關資訊,例如索引項目的出現頻率。接著 Lucene 的分詞器把這些資訊寫到索引檔中 特點 Lucene 在記憶體中持有一塊緩衝區。使用Lucene 的IndexWriter 提供了三個參數用來調整緩衝區的大小以及往磁片上寫索引檔的頻率 1.合併因數 (mergeFactor) 2.最小合併文檔數 (minMergeDocs) 3.最大合併文檔數 (maxMergeDocs) 2009/01/10 Paul, NSYSU MIS
23
常見全文檢索應用系統2-2 - Lucene.NET
2009/01/10 Paul, NSYSU MIS
24
常見全文檢索應用系統2-3 - Lucene.NET
一般的索引 doc.Add(new Field(”filename”, file.FullName, Field.Store.YES, Field.Index.UN_TOKENIZED)); doc.Add(new Field(”contents”, (new StreamReader(file.FullName)).ReadToEnd(), Field.Store.YES, Field.Index.TOKENIZED)); 2009/01/10 Paul, NSYSU MIS
25
常見全文檢索應用系統3-1 - Google 搜尋引擎
特點 Google搜尋引擎有兩個重要特點,有助於得到高精度的搜索結果 應用Web的連結結構計算每個網頁的Rank值,稱為PageRank Google利用超連結改進搜索結果 演算法 主要以PageRank演算法為主,此演算法對於gogle所提出的全文檢索有很大的助益 2009/01/10 Paul, NSYSU MIS
26
常見全文檢索應用系統3-2 - Google 搜尋引擎
工作流程 2009/01/10 Paul, NSYSU MIS
27
Paul, Tiffany @ NSYSU MIS
常見全文檢索應用系統 Oracle 緣由 Oracle Text是9i標準版和企業版的一部分。Oracle9i將全文檢索功能做為內置功能提供給用戶,使得使用者在創建資料庫實例時自動安裝全文檢索 索引概念 利用Oracle Text對文檔集合進行檢索的時候,你必須先在你的文本列上建立索引。索引將文本打碎分成很多記號(token),這些記號通常是用空格分開的一個個單詞 Oracle Text應用的實現實際上就是一個 資料裝載—> 索引資料—>執行檢索 的一個過程 建立的Oracle Text索引被稱為域索引(domain index),包括4種索引類型,利用Create Index建立這4種索引: CONTEXT CTXCAT CTXRULE CTXXPATH 2009/01/10 Paul, NSYSU MIS
28
Paul, Tiffany @ NSYSU MIS
常見全文檢索應用系統 Oracle Oracle實現全文檢索,其機制其實很簡單 通過Oracle專利的詞法分析器(lexer),將文章中所有的表意單元(Oracle 稱為 term)找出來,記錄在一組 以dr$開頭的表中,同時記下該term出現的位置、次數、hash 值等資訊 檢索時,Oracle 從這組表中查找相應的term,並計算其出現頻率,根據某個演算法來計算每個文檔的得分(score),即所謂的‘匹配率’ lexer則是該機制的核心,它決定了全文檢索的效率 2009/01/10 Paul, NSYSU MIS
29
Paul, Tiffany @ NSYSU MIS
常見全文檢索應用系統 Oracle 運作機制 2009/01/10 Paul, NSYSU MIS
30
Paul, Tiffany @ NSYSU MIS
常見全文檢索應用系統 MySQL 簡介 在MySQL中,全文索引的索引類型為FULLTEXT 全文索引可以在VARCHAR或者 TEXT類型的列上建立。它可以通過CREATE TABLE命令建立,也可以通過ALTER TABLE或CREATE INDEX命令建立 對於大規模的資料集,通過ALTER TABLE(或者CREATE INDEX)命令建立全文索引要比把記錄插入帶有全文索引的空表更快 MySQL索引是以B-Tree方式儲存,index可以是一個欄位或是由多個欄位複合而成 全文檢索 建立可以全文檢索的欄位資料表 CREATE TABLE testft (testint int, testvc varchar(50), testtxt text, FULLTEXT (testvc, testtxt) ); 2009/01/10 Paul, NSYSU MIS
31
Paul, Tiffany @ NSYSU MIS
常見全文檢索應用系統 MySQL 檢索語法 SELECT [columns] FROM [table] WHERE MATCH ([indexed_columns]) AGAINST (‘keyword’) 範例: SELECT vehicle_id, description FROM New_Vehicles WHERE MATCH (description) AGAINST (‘options’); 預設全文檢索關鍵字長度為 4 word。 可以修改參數來調整 my.cnf : [mysqld] ft_min_word_len=3 2009/01/10 Paul, NSYSU MIS
32
SQL Server 2008 全文檢索搜尋
33
Paul, Tiffany @ NSYSU MIS
SQL Server 2008 全文檢索概要 讓應用程式和使用者針對 SQL Server資料表中以字元為基礎的資料發出全文檢索查詢 每個全文檢索索引都會為基底資料表中的一或多個資料行建立索引 資料行支援下列資料類型:char、varchar、nchar、nvarchar、 text、ntext、image、xml、varbinary或varbinary(max) 支援 50 種以上不同的語言:英文、西班牙文、中文、日文、阿拉伯文、孟加拉文和印度文等等 2009/01/10 Paul, NSYSU MIS
34
Paul, Tiffany @ NSYSU MIS
SQL Server 2008 全文檢索概要(續) 每種支援的語言提供語言特有的語言元件 包括斷詞工具、字幹分析器和空的同義字檔案 全文檢索述詞: CONTAINS和FREETEXT 資料列集值函數: CONTAINSTABLE和 FREETEXTTABLE 2009/01/10 Paul, NSYSU MIS
35
Paul, Tiffany @ NSYSU MIS
SQL Server2008 全文檢索搜尋運作類型 電子商務網站上的商品或文件、搜尋律師事務所法律資料儲存檔案中的個案記錄、搜尋人力資源部門中比對工作描述與預存的履歷表等等 對於電子商務而言,發揮最佳效能可能會比排序結果等級、重新叫用(Recall)精確度或支援多國語言更重要 對於律師事務所而言:傳回每個可能的資訊可能是最重要的考量 2009/01/10 Paul, NSYSU MIS
36
SQL Server2008 全文檢索搜尋在資料庫的設定
建立全文檢索目錄。 在計畫搜尋的每個資料表上,建立全文檢索索引: 識別想要包含在全文檢索索引中的每個文字資料行 指定想讓全文檢索搜尋用於資料行中文件的語言 選擇想要針對全文檢索索引使用的變更追蹤機制 2009/01/10 Paul, NSYSU MIS
37
SQL Server2008 全文檢索可以搜尋的項目
一或多個特定的單字或片語 不可分割的詞彙(Simple Term) 以指定之文字開頭的單字或片語 前置詞彙(Prefix Term) 特定單字的字形變化 衍生詞彙(Generation Term) 靠近另一個單字或片語的單字或片語 相近詞彙(Proximity Term) 特定單字的同義字變化 同義字(Thesaurus) 使用加權值的單字或片語 加權詞彙(Weighted Term) 2009/01/10 Paul, NSYSU MIS
38
全文檢索查詢述詞 CONTAINS 和 FREETEXT
e.g. 電子商務 - 搜尋網站上的產品: SELECT product_id FROM products WHERE CONTAINS(product_description, ”Snap Happy 100EZ” OR FORMSOF(THESAURUS,’Snap Happy’) OR ‘100EZ’) AND product_cost<200 … 2009/01/10 Paul, NSYSU MIS
39
Paul, Tiffany @ NSYSU MIS
SQL Server2008 全文檢索搜尋架構 由兩個處理程式所組成: SQL Server 處理序 (sqlservr.exe) 篩選背景程式主機處理序 (fdhost.exe) 2009/01/10 Paul, NSYSU MIS
40
Paul, Tiffany @ NSYSU MIS
2009/01/10 Paul, NSYSU MIS
41
SQL Server2008 全文檢索索引和查詢處理程序
目的: 負責全文檢索索引的初始擴展以及修改過全文檢索索引資料表中的資料後續更新 包括「全文檢索索引處理程序」以及「全文檢索查詢處理程序」兩個動作 完成全文檢索擴展後會觸發最後的合併程序 將索引片段合併成一個主要的全文檢索索引 提升查詢的效能 查詢處理器會將查詢的全文檢索部分傳遞至全文檢索引擎 全文檢索引擎會執行斷詞並選擇性地執行同義字展開、詞幹分析和停用字詞(非搜尋字) 處理 2009/01/10 Paul, NSYSU MIS
42
Paul, Tiffany @ NSYSU MIS
SQL Server2008 全文檢索引擎 全文檢索引擎支援索引與查詢兩項作業 索引: 當資料經過篩選而且文字經過斷詞處理之後,SQL Server 處理序就會接收結果並建立它們的索引 查詢: 全文檢索引擎會處理全文檢索搜尋查詢,並且判斷基底資料表中的哪些項目 (資料列或文件) 符合全文檢索選取準則 2009/01/10 Paul, NSYSU MIS
43
Paul, Tiffany @ NSYSU MIS
設定全文檢索語言元件 全文檢索索引所包含的每個資料行都與 Microsoft Windows 地區設定識別碼 (LCID) 相關聯 識別碼就等於全文檢索搜尋所支援的語言 例如,LCID 1033 等於美式英文,而 LCID 2057 等於英式英文。 以英文地區(LCID 1033或LCID 2057)設定為例,"a"、"and"、"is" 和 "the" 都會被視為停用字詞 2009/01/10 Paul, NSYSU MIS
44
Paul, Tiffany @ NSYSU MIS
設定全文檢索語言元件(續) 斷詞工具(Word Breaker) 對於給定的語言而言,斷詞工具會根據語言的語彙規則,判斷文字分界存在的位置,藉以識別個別單字。 每個”單字” 也稱為 Token 「字幹分析器」(Stemmer) 會根據該語言的規則來產生特定單字的字形變化 例如,"running"、"ran" 和 "runner" 是 "run" 單字的不同形態 2009/01/10 Paul, NSYSU MIS
45
Paul, Tiffany @ NSYSU MIS
母體擴展(Population) 建立與維護全文檢索索引的程序稱為「母體擴展」(Population) 也稱為「搜耙」(Crawl) 有三種類型: 完整母體擴展 以變更追蹤為基礎的母體擴展 以時間戳記為基礎的累加母體擴展 2009/01/10 Paul, NSYSU MIS
46
Paul, Tiffany @ NSYSU MIS
建立與維護全文檢索索引語法 建立全文檢索索引 CREATE FULLTEXT INDEX (Transact-SQL) 更改全文檢索索引 ALTER FULLTEXT INDEX (Transact-SQL) 卸除全文檢索索引 DROP FULLTEXT INDEX (Transact-SQL) 2009/01/10 Paul, NSYSU MIS
47
全文檢索述詞 CONTAINS 和 FREETEXT
CONTAINS 和 FREETEXT 都是在SELECT陳述式的WHERE或HAVING子句中指定的 可與任何其他 Transact-SQL述詞結合,例如LIKE 和 BETWEEN 2009/01/10 Paul, NSYSU MIS
48
全文檢索述詞 CONTAINS 和 FREETEXT(續)
使用 CONTAINS (或 CONTAINSTABLE) 以進行下列各種比對: 單字和片語的精確或模糊 (較不精確) 比對 單字彼此在一定距離之間的接近度比對 單字和片語加權比對 FREETEXT (或 FREETEXTTABLE) 用來比對指定之單字、片語或句子「Freetext 字串」的意義 但不比對確切的用字 2009/01/10 Paul, NSYSU MIS
49
範例1 - 搭配 <simple_term> 使用 CONTAINS
尋找所有價格是 $80.99,且含有 “Mountain” 這個單字的產品: USE AdventureWorks; GO SELECT Name, ListPrice FROM Production.Product WHERE ListPrice = 80.99;simple_term AND CONTAINS(Name, 'Mountain'); 2009/01/10 Paul, NSYSU MIS
50
範例2 -使用 FREETEXT 搜尋含有指定字元值的單字
會搜尋包含 vital、safety 和 components 相關單字的所有文件: 2009/01/10 Paul, NSYSU MIS
51
全文檢索函數 CONTAINSTABLE和FREETEXTTABLE
如同 SELECT … FROM 子句中的一般資料表名稱 傳回符合全文檢索查詢之零、一或多個資料列的資料表。 針對每個資料列傳回一個相關次序值 (RANK) 和全文檢索索引鍵 (KEY) KEY :傳回所傳回之資料列的唯一值 RANK :傳回每個資料列的「等級值」(Rank Value) 表示資料列與選取準則的符合程度 top_n_by_rank參數-限制要傳回的相符項目數 2009/01/10 Paul, NSYSU MIS
52
Paul, Tiffany @ NSYSU MIS
範例3 -使用 CONTAINSTABLE 傳回所有食物種類的描述與類別名稱 其中 Description 資料行包含 “sweet and savory” 的單字,近似於 “sauces” 或 “candies”。 所有類別目錄名稱是 “Seafood” 的資料列都會被略過。 只會傳回等級值大於或等於 2 的資料列 2009/01/10 Paul, NSYSU MIS
53
Paul, Tiffany @ NSYSU MIS
範例4 -使用FREETEXTTABLE USE Northwind; GO SELECT KEY_TBL.RANK, FT_TBL.Description FROM Categories AS FT_TBL INNER JOIN FREETEXTTABLE(Categories, Description, 'How can I make my own beers and ales?') AS KEY_TBL ON FT_TBL.CategoryID = KEY_TBL.[KEY] ORDER BY KEY_TBL.RANK DESC; GO 2009/01/10 Paul, NSYSU MIS
54
Paul, Tiffany @ NSYSU MIS
只傳回等級值大於或等於 10 的資料列 USE Northwind; GO SELECT KEY_TBL.RANK, FT_TBL.Description FROM Categories AS FT_TBL INNER JOIN FREETEXTTABLE(Categories, Description, 'How can I make my own beers and ales?') AS KEY_TBL ON FT_TBL.CategoryID = KEY_TBL.[KEY] WHERE KEY_TBL.RANK >= 10 ORDER BY KEY_TBL.RANK DESC; GO 2009/01/10 Paul, NSYSU MIS
55
使用布林運算子 - AND、OR、AND NOT在 CONTAINS和CONTAINSTABLE中
USE AdventureWorks; GO SELECT Description FROM Production.ProductDescription WHERE ProductDescriptionID <> 5 AND CONTAINS(Description, ' Aluminum AND spindle'); GO 2009/01/10 Paul, NSYSU MIS
56
Paul, Tiffany @ NSYSU MIS
全文檢索查詢的效能微調與最佳化 使用 ALTER INDEX REORGANIZE 來重組基底資料表的索引 使用 ALTER FULLTEXT CATALOG REORGANIZE 來重新組織全文檢索目錄 將選擇的全文檢索索引鍵資料行限制為小資料行 使用整數全文檢索索引鍵 將多個 CONTAINS 述詞結合為一個 CONTAINS 述詞 2009/01/10 Paul, NSYSU MIS
57
Paul, Tiffany @ NSYSU MIS
全文檢索查詢的效能微調與最佳化 (續) 如果只需要全文檢索索引鍵或等級資訊,則分別使用 CONTAINSTABLE 或 FREETEXTTABLE,不要使用 CONTAINS 或 FREETEXT 若要限制結果並增加效能,使用top_n_by_rank 參數 若要減少片段的數目,可以使用 ALTER FULLTEXT CATALOG Transact-SQL 陳述式的 REORGANIZE 選項來重新組織全文檢索目錄 2009/01/10 Paul, NSYSU MIS
58
Paul, Tiffany @ NSYSU MIS
SQL Server全文檢索服務相關實作1 XML一直是微軟所領導的技術,XML具備易解讀、標準開放、可延伸、跨平台的優點 一般企業級的系統與應用程式大部份也都與XML以及Web Service整合 XML以垂直、階層、遞迴方式描述資料是很適合應用於全文檢索機制中 2009/01/10 Paul, NSYSU MIS
59
SQL Server全文檢索服務相關實作2-1 - 建立全文檢索目錄
以精靈方式產生 在 [物件總管] 中,展開伺服器,並展開 [資料庫],然後展開您要在其中建立全文檢索目錄的資料庫 展開 [儲存體],然後以滑鼠右鍵按一下 [全文檢索目錄] 選取 [新增全文檢索目錄] 在 [新增全文檢索目錄] 對話方塊中,為您要重新建立的目錄指定資訊 按一下 [確定] 2009/01/10 Paul, NSYSU MIS
60
SQL Server全文檢索服務相關實作2-2 -全文內文清單選項
2009/01/10 Paul, NSYSU MIS
61
SQL Server全文檢索服務相關實作2-3 -全文目錄視窗
2009/01/10 Paul, NSYSU MIS
62
SQL Server全文檢索服務相關實作2-4 - 建立全文檢索目錄
使用 T-SQL 敘述(直接由指令產生) CREATE FULLTEXT CATALOG AdventureWorksFTCat WITH ACCENT_SENSITIVITY = OFF AS DEFAULT AUTHORIZATION dbo; 2009/01/10 Paul, NSYSU MIS
63
SQL Server全文檢索服務相關實作3-1 -建立全文索引
以精靈方式產生 在SQL Server 2008中,可以使用 Management Studio 中的全文檢索索引精靈來建立全文檢索索引 在 [物件總管] 中,以滑鼠右鍵按一下您要建立全文檢索索引的資料表,然後選取 [全文檢索索引] 選取 [定義全文檢索索引] 2009/01/10 Paul, NSYSU MIS
64
SQL Server全文檢索服務相關實作3-2 -全文索引文件選單
2009/01/10 Paul, NSYSU MIS
65
SQL Server全文檢索服務相關實作3-3 -選擇單一欄位唯一索引
2009/01/10 Paul, NSYSU MIS
66
SQL Server全文檢索服務相關實作3-4 -選擇做為全文索引的欄位與定義Schema
2009/01/10 Paul, NSYSU MIS
67
SQL Server全文檢索服務相關實作3-5 -選擇SQL Server 是否維護全文索引的log
2009/01/10 Paul, NSYSU MIS
68
SQL Server全文檢索服務相關實作3-6 -指派全文索引到全文目錄
2009/01/10 Paul, NSYSU MIS
69
SQL Server全文檢索服務相關實作3-7 -檢視先前全文索引精靈設定
2009/01/10 Paul, NSYSU MIS
70
SQL Server全文檢索服務相關實作3-8 -建立全文索引
使用 T-SQL 敘述(直接由指令產生) CREATE FULLTEXT INDEX ON Production.ProductModel ( CatalogDescription LANGUAGE English, Instructions LANGUAGE English, Name LANGUAGE English ) KEY INDEX PK_ProductModel_ProductModelID ON AdventureWorksFTCat WITH CHANGE_TRACKING AUTO ); GO ALTER FULLTEXT INDEX ON Production.ProductModel ENABLE; 2009/01/10 Paul, NSYSU MIS
71
SQL Server全文檢索服務相關實作4-1 - FREETEXT
以簡單字元 ( character-based ) 為基礎方式 語法:找尋「sock」之範例 SELECT ProductModelID, Name, CatalogDescription, Instructions FROM Production.ProductModel WHERE FREETEXT(*, N'sock'); 2009/01/10 Paul, NSYSU MIS
72
SQL Server全文檢索服務相關實作4-2 - FREETEXT
以自動字幹 (Automatic Word Stemming ) 查詢 語法:查詢「weld」 SELECT ProductModelID, Name, CatalogDescription, Instructions FROM Production.ProductModel WHERE FREETEXT(CatalogDescription, N'weld', LANGUAGE 1033); 2009/01/10 Paul, NSYSU MIS
73
SQL Server全文檢索服務相關實作4-3 - CONTAINS
以字詞 ( word-based ) 為基礎方式 語法: SELECT ProductModelID, Name, CatalogDescription, Instructions FROM Production.ProductModel WHERE CONTAINS(*, N'weld'); 2009/01/10 Paul, NSYSU MIS
74
SQL Server全文檢索服務相關實作4-4 - CONTAINS
搭配FORMSOF產生term SELECT ProductModelID, Name, CatalogDescription FROM Production.ProductModel WHERE CONTAINS ( ), N'FORMSOF(INFLECTIONAL, sport)' ); 2009/01/10 Paul, NSYSU MIS
75
SQL Server全文檢索服務相關實作5-1 - XML與全文檢索
使用GUI定義XML 2009/01/10 Paul, NSYSU MIS
76
SQL Server全文檢索服務相關實作5-2 -輸入資料到XML欄位
2009/01/10 Paul, NSYSU MIS
77
SQL Server全文檢索服務相關實作5-3 -使用 XQuery
XQuery 是可查詢結構化或半結構化 XML 資料的語言 利用 Database Engine 提供的 xml 資料類型支援,就可以在資料庫中儲存文件,然後使用 XQuery 進行查詢 XQuery 是以現有的 XPath 查詢語言為基礎,加上額外支援以獲取更佳的反覆運算、更好的排序結果,以及建構必要 XML 的能力。XQuery 可在 XQuery 資料模型上運作。 2009/01/10 Paul, NSYSU MIS
78
SQL Server全文檢索服務相關實作5-4 -使用 XQuery
建立一個新表格 CREATE TABLE xmltblnew (pk INT IDENTITY PRIMARY KEY, people XML) GO --Insert data into the new table INSERT INTO xmltblnew (people) SELECT * FROM OPENROWSET ( BULK 'C:\peopleXML.xml', SINGLE_BLOB) AS TEMP 2009/01/10 Paul, NSYSU MIS
79
SQL Server全文檢索服務相關實作5-5 -使用 XQuery
以年紀查詢所有人,回傳姓名 SELECT people.query( 'for $p in //people WHERE $p//age return <person> <name>{$p//givenName}</name> </person> ' ) FROM xmltblnew 2009/01/10 Paul, NSYSU MIS
80
Paul, Tiffany @ NSYSU MIS
參考文獻 英文: [1] Pro SQL Server 2008 XML, ch7- Indexing XML, p ,Apress , 2008 [2] Accelerated SQL Server , ch17 - SQL Server XML and XQuery Support , p ,Apress, 2008, [3] SQL Server 2008 Transact-SQL Recipes , ch6 - Full-Text Search, Apress , p , [4] Pro T-SQL 2008 Programmer’s Guide, ch10 - Integrated Full-Text Search Apress, p , 中文: [胡述兆, 1995] 胡述兆,圖書館學與資訊科學大辭典,國立編譯館主編,台北市:漢美圖書,1995,頁669。 [林東清, 2008] 林東清著,資訊管理-- e化企業的核心競爭能力,台北市:智勝文化,2008,頁 。 [中文全文檢索搜索網, 2004 ] 中文搜索引擎技術揭密:系統架構, [ 徐玉梅, 2002 ] 研究文獻全文資料庫建置與檢索之規劃研究,行政院國家科學委員會九十一年度科技行政研究發展報告,行政院國家科學委員會科學技術資料中心, 網站: [1] 全文檢索搜尋 (SQLServer) ,MSDN開發技術, [2]微軟技術網站, [3]IBM Open Find, [4] Lucene, [5] Google, [6] Oracle , [7] MySQL, [8] Wiki 「全文檢索」議題, 2009/01/10 Paul, NSYSU MIS
81
Paul, Tiffany @ NSYSU MIS
Thanks 2009/01/10 Paul, NSYSU MIS
Similar presentations