資料庫系統專題課程 期末報告 --- 全文檢索搜尋

Slides:



Advertisements
Similar presentations
第二章 简单的 SQL 语句. 本章要点  创建一个简单的表  SQL 语句介绍  最简单的查询语句 select  带有限制条件的查询  查询结果的排序显示.
Advertisements

2010 年 6 月课件制作人:王亚楠 1 模块 2 项目开发概论 教学课件 年 6 月课件制作人:王亚楠 2 目录 目标 了解:数据库技术的基本概念与结构 理解:数据模型的分类与结构组成 掌握:关系数据库及 SQL 的基本理论 知识 掌握:数据库设计的方法与步骤 内容 2.1 数据库技术基础.
2011/11,12 南台資管 吳昭儀. 1. 使用者介面 (User Interface)  使用者操作畫面的安排  Textbox, ComboBox, ListBox, CheckList, … 2. 流程控制 (Process Control)  使用者輸入資料檢查  計算  資料輸出.
PHP 训练营 - MySQL OA 产品部 李鑫辉 2011 年 9 月. 内容提要 & 目录 1. 介绍 (10 分钟 ) 1.1. 简介 1.2. 特点 1.3. 安装 2. 语法 (60 分钟 ) 2.1. 存储引擎 MyISAM InnoDB 特点与区别.
Java 技术与应用 数据库应用 ( 第 14 章 ) 西安交大 卫颜俊 2008 年 12 月 电子信箱: QQ: 网站 : /java.
第 7 章 数据库 1. Overview  数据库概述  数据库管理系统  数据库的体系结构和数据库模型  SQL 语言  数据库技术  构建数据库系统 2.
第八单元 数据库MySQL应用基础 MySQL数据库应用基础 MySQ数据库操作使用 Mysql管理工具 第25章 数据库的增加/删除操作
第四章 数据库管理和使用.
第2章 資料庫系統 2-1 資料庫環境的四大組成元件 2-2 ANSI/SPARC的三層資料庫系統架構
第5章 关系数据库标准语言SQL 主讲:张丽芳.
10-1 資料庫管理系統簡介 10-2 關聯式資料模式和查詢語言 10-3 Access 簡介 10-4 XML 簡介
第2讲 Transact-SQL语言.
第5章 索引及视图操作 数据库原理应用与实践 SQL SERver2014(第2版) 主编 贾铁军 科学出版社 编著 陈国秦 万程 邢一鸣
OceanBase 0.4:从API到SQL 日照
第14章 預存程序 14-1 預存程序的基礎 14-2 建立與執行預存程序 14-3 預存程序的參數傳遞 14-4 預存程序的傳回值
第4章 关系数据库标准语言SQL 4.1 SQL语言概述 4.2 SQL数据查询功能 4.3 SQL数据操作功能 4.4 SQL数据定义功能.
第十三章 SQL Server的安全管理.
資料庫 (Database) SQL Server 2008實作
第3章 SQL的基础知识 数据库管理及应用 3.1 SQL简介 3.2 SQL的数据模型 3.3 标识符 3.4 使用SQL语句管理数据库
数据库概述 简而言之,数据库(DataBase)就是一个存储数据的仓库。为了方便数据的存储和管理,它将数据按照特定的规律存储在磁盘上。通过数据库管理系统,可以有效的组织和管理存储在数据库中的数据。如今,已经存在了Oracle、SQL Server、MySQL等诸多优秀的数据库。在这一章中将讲解的内容包括。
第 八 章 資料庫安全 本投影片(下稱教用資源)僅授權給採用教用資源相關之旗標書籍為教科書之授課老師(下稱老師)專用,老師為教學使用之目的,得摘錄、編輯、重製教用資源(但使用量不得超過各該教用資源內容之80%)以製作為輔助教學之教學投影片,並於授課時搭配旗標書籍公開播放,但不得為網際網路公開傳輸之遠距教學、網路教學等之使用;除此之外,老師不得再授權予任何第三人使用,並不得將依此授權所製作之教學投影片之相關著作物移作他用。
第6章 資料庫管理系統 6-1 關聯式資料庫管理系統 6-2 SQL Server資料庫管理系統
创建数据库 MySql创建数据库的语法: CREATE DATABASE 数据库名; 例: CREATE DATABASE mydb;
第三章 管理信息系统的技术基础 主要内容: 数据处理 数据组织 数据库技术 4. 计算机网络.
第2章 数据定义功能 创建表 在关系型数据模型中,表(Table)是最基本的数据结构。
第7章 建立資料表與完整性限制條件 7-1 資料型別 7-2 資料表的建立 7-3 建立完整性限制條件 7-4 修改與刪除資料表
關聯式資料庫.
第十五章 常見的資料庫管理系統 目的 Oracle 微軟SQL Server 微軟Access MySQL Oracle 應用伺服器
建立/修改/刪除資料庫 資料庫組成檔案 建立資料庫: 資料(庫)檔案 交易記錄檔 使用Enterprise Manager工具 自助法:
第1章 SQL Server 关系数据库简介 1.1 SQL Server 特点 1.2 SQL Server的安装和配置
第六章 學習SQL語言.
課程名稱:資料庫系統 授課老師:李春雄 博士
基于Hadoop的数据仓库Hive.
Chapter 12 T-SQL 語法與 ASP.NET.
Chap 10 SQL定義、操作與控制指令.
第 11 章 建立檢視表.
Microsoft SQL Server 2000 李金双.
第 7 章 建立資料表與 資料庫圖表.
SQL Server 2000 数据库入门.
第7章 ADO.NET操作SQL Server数据库
第3章 MySQL教學範本 主從式資料庫系統 - CH3.
MySQL数据库基础与实例教程 之 MySQL表结构的管理 郭水泉.
Ch4.SQL Server 2005資料庫組成員元件介紹
iRepor报表设计基础 IReport安装 普通实体报表 数据结果集报表 工作流主从报表 饼状图报表 柱状图,曲线图报表 条形码报表
实验二讲评 … 张榆….
数据库技术.
第 10 章 数据库编程.
第20章 MySQL数据库.
数据库技术与应用.
第11章 ListView延迟加载效果 授课老师:高成珍 QQ号: QQ群: 、
20 SQL Server全文檢索搜尋 20-1 SQL Server全文檢索搜尋 20-2 全文檢索目錄的建立 20-3 建立全文檢索索引
第18章 個人入口網站的建立 18-1入口網站的基礎 18-2 建立網站的搜尋引擎 18-3 網頁組件的個人化功能
第18章 SQL結構化查詢語言 18-1 SQL語言的基礎 18-2 SQL的查詢指令 18-3 SQL子查詢與合併查詢.
CS, ZJU 4/18/2019 Chapter 7 数据库.
3.2 Mysql 命令行 1 查看数据库 SHOW DATABASES; 2 创建一个数据库test1 CREATE DATABASE test1; 3 选择你所创建的数据库 USE test1; (按回车键出现Database changed 时说明操作成功!) 4 查看现在的数据库中存在什么表.
6 SQL語言與資料庫建置 6-1 SQL語言的基礎 6-2 SQL Server的資料庫結構 6-3 建立使用者資料庫
通讯录管理系统设计 常州工程职业技术学院 计算机技术系.
查询与视图 蔡海洋.
SQL查询语句 蔡海洋.
OceanBase 0.4:从API到SQL 日照
第三章 SQL Server数据管理.
讲课人:王璞 浙江工商职业技术学院.
第4章 表的创建与维护 4.1 数据类型 4.2 数据完整性约束 4.3 创建数据表 4.4 修改数据表 4.5 删除数据表.
SQL Server2000概述 SQL Server简介 SQL Server安装 SQL Server数据库 2019/5/8.
第11章 安全管理 教学提示:数据库安全是关系数据库中的非常重要的方面,包括了系统安全、数据安全、资源管理、用户管理、权限管理、角色管理、口令管理以及授权、认证、审计等相当多方面的内容。本章讲述有关数据库安全方面的知识。 数据库系统的安全性是每个数据库管理员都必须认真考虑的问题。SQL Server.
第9章 视 图 教学提示:用户在查询数据库中的数据时,除了直接查看数据库中的表中的数据以外,还可以通过视图来查看表中的数据,也就是说,视图为用户提供了另外一种查看表中的数据的方式。 视图是一种虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。但是,视图并不在数据库中以存储的数据值集形式存在。行和列数据来自于定义视图的查询所引用的表,并且在引用视图时动态生成。
How to use Gene Name Service
11 檢視表的建立 11-1 檢視表的基礎 11-2 建立檢視表 11-3 修改與刪除檢視表 11-4 編輯檢視表的內容.
第4章 数据查询.
Web安全基础教程
Presentation transcript:

資料庫系統專題課程 期末報告 --- 全文檢索搜尋 資料庫系統專題課程 期末報告 --- 全文檢索搜尋 指導老師:黃三益教授 D964020003曾智義 Paul            D954020008唐 筠 Tiffany

Paul, Tiffany @ NSYSU MIS Agenda 摘要 導論 全文檢索概念 資料庫設計與全文檢索 SQL Server 2008 全文檢索搜尋 SQL Server全文檢索服務相關實作 2009/01/10 Paul, Tiffany @ NSYSU MIS

Paul, Tiffany @ NSYSU MIS 摘要1 資訊無所不在的環境,相對的也產生大量的知識、資訊、檔案與文件 在以服務精神為導向與以使用者為中心的思維中,如何在大量的文件檔案中快速的找到需求的資訊與知識,如何提供完整且精確的檢索方式達到使用者需求,是一個值得探討的議題 2009/01/10 Paul, Tiffany @ NSYSU MIS

摘要2 本專案計畫擬由全文檢索基本概念和需求為基礎,簡單介紹與全文索引有關的議題 斷詞 ( word segmentation ) 語幹處理 (stemming ) 符素解析器 ( token parser ) 召回率 ( recall rate ) 反向索引 ( inverted index ) 精確率 (precision ) 彙整常用的全文檢索應用程式及全文檢索目前的應用 實作案例 :  SQL 2008 為技術與實作範例 2009/01/10 Paul, Tiffany @ NSYSU MIS

Paul, Tiffany @ NSYSU MIS 摘要3 專案計畫的貢獻 由概念到技術實作與相關應用中,彙整全文檢索相關知識,提供一個完整性的介紹 2009/01/10 Paul, Tiffany @ NSYSU MIS

Paul, Tiffany @ NSYSU MIS 導論1-何謂全文檢索 全文檢索(Full Text Searching) 在大量的文章裡找出某一段文字的方法 從早期的循序搜尋(Sequential Searching),到現在的索引搜尋(Index Searching)都是為了能更快速更有效率的執行尋找比對的工作 全文檢索系統中,首重索引結構(Index Structure) 因為索引的結構除了影響索引建立的時間和索引檔的大小外更影響了查詢的速度。 2009/01/10 Paul, Tiffany @ NSYSU MIS

Paul, Tiffany @ NSYSU MIS 導論2-全文檢索重要技術 全文檢索基本上是搜尋引擎的核心 當資料 ( 可能是文件、檔案或是網頁等 ) 被抓回硬碟中儲存之後,就可以利用全文檢索的機制進行檢索,其主要的技術有兩項 : 索引系統:建立檢索時使用的索引,使系統能在一兩次的硬碟存取後就查到資料 查詢系統:利用索引系統查詢資料後,將查到的資料呈現在顯示介面 (例如:網頁) 上 2009/01/10 Paul, Tiffany @ NSYSU MIS

Paul, Tiffany @ NSYSU MIS 導論3-搜尋引擎和全文檢索主要區別 數據量 內容相關性 安全性 個性化和智慧化 2009/01/10 Paul, Tiffany @ NSYSU MIS

Paul, Tiffany @ NSYSU MIS 全文檢索概念1-全文檢索的方法 全文檢索的方法主要分為 依照「字」進行 依照「字」檢索是指對於文章中的每一個字都建立索引,檢索時將詞分解為字的組合 對於各種不同的語言而言,字有不同的含義檢索 依照「詞」進行檢索兩種 2009/01/10 Paul, Tiffany @ NSYSU MIS

Paul, Tiffany @ NSYSU MIS 全文檢索概念2-全文檢索系統架構示意圖 2009/01/10 Paul, Tiffany @ NSYSU MIS

全文檢索概念3-語幹還原 ( stemming ) 英文字彙中,動詞有原形、過去式、進行式、完成式的變化,名詞會有單複數的變化,而副詞有可能是由形容詞變化而來 為了達到字彙的精簡以利檢索,所以採用stemming的技術,stemming會把字彙還原成語幹的形式 例如:starting, starts, started都會被還原成start。 2009/01/10 Paul, Tiffany @ NSYSU MIS

全文檢索概念4-單元剖析 ( token parser ) 將符合既定文法(grammar)的文字轉換成結構化 進行全文檢索之前,將「詞」視為最小單位,即所謂的token,然後透過一些相關規則語演算法等進行編譯,將token轉化為特定的資料結構 2009/01/10 Paul, Tiffany @ NSYSU MIS

全文檢索概念5-斷詞 ( word segmentation ) 對於英文而言,詞語詞之間是以空白做為間隔分開,而中文是以字為單位,句子中所有的字連起來才能描述一個意思 英文句子「I am a  student」 用中文敘述則為「我是一個學生」。電腦可以很簡單通過空格知道student是一個單詞,但是無法直接知道「學」、「生」兩個字合起來才表示「學生」一個詞。把中文的句子切分成有意義的詞,稱為中文分詞。 2009/01/10 Paul, Tiffany @ NSYSU MIS

全文檢索概念6-1 -反向索引 ( inverted index ) 一種索引結構 儲存了單詞與單詞它們自己本身在一個或多個文檔中所在位置之間的映射 反向索引通常利用關聯陣列實現,在全文檢索中,反向索引扮演重要角色 它擁有兩種表現形式: inverted file index,其表現形式為 {單詞,單詞所在文檔的ID} full inverted index,其表現形式為 {單詞,(單詞所在文檔的ID,在具體文檔中的位置)} 2009/01/10 Paul, Tiffany @ NSYSU MIS

全文檢索概念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, Tiffany @ NSYSU MIS

全文檢索概念7-1 -召回率 ( recall rate ) 與精確度( precision ) 好的檢索系統檢索到的相關文件檔越多越好,不相關文件檔越少越好 召回率和精確度是衡量資訊檢索系統性能最重要的參數 召回率R:用檢索到相關文件檔數作為分子,所有相關文件檔總數作為分母 精確度P: 用檢索到相關文件檔數作為分子,所有檢索到的文件檔總數作為分母 2009/01/10 Paul, Tiffany @ NSYSU MIS

全文檢索概念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, Tiffany @ NSYSU MIS

全文檢索概念7-3 -召回率 ( recall rate ) 與精確度( precision ) 一個資料庫有500個文件檔, 其中有50個文件檔符合定義的問題。系統檢索到75個文件檔,但是只有45個符合定義的問題 召回率      R=45/50=90% 精確度      P=45/75=60% 本例中,系統檢索是比較有效的,召回率為90%。但是結果對一位使用者而言,並非其所需求的,因為有近一半的檢索結果是不相關 研究表明:在不犧牲精確度的情況下,獲得一個高召回率是很困難的。召回率越高,精確度下降的很快,而且這種趨勢不是線性的 2009/01/10 Paul, Tiffany @ NSYSU MIS

Paul, Tiffany @ NSYSU MIS 資料庫設計與全文檢索 對於處理大量資料而言,資料庫設計大概分為三類 以”文檔”結構搭配不同的索引方法 關聯式資料庫管理系統(RDBMS) 原生性XML資料庫 2009/01/10 Paul, Tiffany @ NSYSU MIS

常見全文檢索應用系統1-1 - IBM OmniFind Yahoo! Edition 使用平台 跨平台支援 ( 32 位元的 Linux 與 Windows 都支援 ) 搜尋引擎 OmniFind Yahoo! Edition 是 IBM 與 Yahoo! 公司合作開發的搜尋軟體 語言 多國語言 介面 API介面,搜尋功能整合既有系統 索引建立 有下列三種方式: 直接針對檔案系統建立索引 透過 Web Crawler (Spider) 直接對特定網址進行全站檢索 可透過 API 進行文件索引 同義字 支援同義字,並可匯入、匯出 官方網址 http://www.demos.ibm.com/on_demand/Demo/zh_tw/IBM_Demo_IBM_OmniFind_Yahoo_Edition-Dec06.html 2009/01/10 Paul, Tiffany @ NSYSU MIS

常見全文檢索應用系統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 = "http://[omnifindserver:port#]/api/search?query=" + strSearch + "&collection=Default"; 將找到和讀到的結果回傳  string strResults = "";  strResults = new System.Net.WebClient().DownloadString(strRequest);  xmlSearch.DocumentContent = strResults; 2009/01/10 Paul, Tiffany @ NSYSU MIS

常見全文檢索應用系統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, Tiffany @ NSYSU MIS

常見全文檢索應用系統2-2 - Lucene.NET 2009/01/10 Paul, Tiffany @ NSYSU MIS

常見全文檢索應用系統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, Tiffany @ NSYSU MIS

常見全文檢索應用系統3-1 - Google 搜尋引擎 特點 Google搜尋引擎有兩個重要特點,有助於得到高精度的搜索結果 應用Web的連結結構計算每個網頁的Rank值,稱為PageRank Google利用超連結改進搜索結果 演算法 主要以PageRank演算法為主,此演算法對於gogle所提出的全文檢索有很大的助益 2009/01/10 Paul, Tiffany @ NSYSU MIS

常見全文檢索應用系統3-2 - Google 搜尋引擎 工作流程 2009/01/10 Paul, Tiffany @ NSYSU MIS

Paul, Tiffany @ NSYSU MIS 常見全文檢索應用系統4-1 - 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, Tiffany @ NSYSU MIS

Paul, Tiffany @ NSYSU MIS 常見全文檢索應用系統4-2 - Oracle Oracle實現全文檢索,其機制其實很簡單 通過Oracle專利的詞法分析器(lexer),將文章中所有的表意單元(Oracle 稱為 term)找出來,記錄在一組 以dr$開頭的表中,同時記下該term出現的位置、次數、hash 值等資訊 檢索時,Oracle 從這組表中查找相應的term,並計算其出現頻率,根據某個演算法來計算每個文檔的得分(score),即所謂的‘匹配率’ lexer則是該機制的核心,它決定了全文檢索的效率 2009/01/10 Paul, Tiffany @ NSYSU MIS

Paul, Tiffany @ NSYSU MIS 常見全文檢索應用系統4-3 - Oracle 運作機制 2009/01/10 Paul, Tiffany @ NSYSU MIS

Paul, Tiffany @ NSYSU MIS 常見全文檢索應用系統5-1 - 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, Tiffany @ NSYSU MIS

Paul, Tiffany @ NSYSU MIS 常見全文檢索應用系統5-2 - 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, Tiffany @ NSYSU MIS

SQL Server 2008 全文檢索搜尋

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, Tiffany @ NSYSU MIS

Paul, Tiffany @ NSYSU MIS SQL Server 2008 全文檢索概要(續) 每種支援的語言提供語言特有的語言元件 包括斷詞工具、字幹分析器和空的同義字檔案 全文檢索述詞: CONTAINS和FREETEXT 資料列集值函數: CONTAINSTABLE和 FREETEXTTABLE 2009/01/10 Paul, Tiffany @ NSYSU MIS

Paul, Tiffany @ NSYSU MIS SQL Server2008 全文檢索搜尋運作類型 電子商務網站上的商品或文件、搜尋律師事務所法律資料儲存檔案中的個案記錄、搜尋人力資源部門中比對工作描述與預存的履歷表等等 對於電子商務而言,發揮最佳效能可能會比排序結果等級、重新叫用(Recall)精確度或支援多國語言更重要 對於律師事務所而言:傳回每個可能的資訊可能是最重要的考量 2009/01/10 Paul, Tiffany @ NSYSU MIS

SQL Server2008 全文檢索搜尋在資料庫的設定 建立全文檢索目錄。 在計畫搜尋的每個資料表上,建立全文檢索索引: 識別想要包含在全文檢索索引中的每個文字資料行 指定想讓全文檢索搜尋用於資料行中文件的語言 選擇想要針對全文檢索索引使用的變更追蹤機制 2009/01/10 Paul, Tiffany @ NSYSU MIS

SQL Server2008 全文檢索可以搜尋的項目 一或多個特定的單字或片語 不可分割的詞彙(Simple Term) 以指定之文字開頭的單字或片語 前置詞彙(Prefix Term) 特定單字的字形變化 衍生詞彙(Generation Term) 靠近另一個單字或片語的單字或片語 相近詞彙(Proximity Term) 特定單字的同義字變化 同義字(Thesaurus) 使用加權值的單字或片語 加權詞彙(Weighted Term) 2009/01/10 Paul, Tiffany @ NSYSU MIS

全文檢索查詢述詞 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, Tiffany @ NSYSU MIS

Paul, Tiffany @ NSYSU MIS SQL Server2008 全文檢索搜尋架構 由兩個處理程式所組成: SQL Server 處理序 (sqlservr.exe) 篩選背景程式主機處理序 (fdhost.exe) 2009/01/10 Paul, Tiffany @ NSYSU MIS

Paul, Tiffany @ NSYSU MIS 2009/01/10 Paul, Tiffany @ NSYSU MIS

SQL Server2008 全文檢索索引和查詢處理程序 目的: 負責全文檢索索引的初始擴展以及修改過全文檢索索引資料表中的資料後續更新 包括「全文檢索索引處理程序」以及「全文檢索查詢處理程序」兩個動作 完成全文檢索擴展後會觸發最後的合併程序 將索引片段合併成一個主要的全文檢索索引 提升查詢的效能 查詢處理器會將查詢的全文檢索部分傳遞至全文檢索引擎 全文檢索引擎會執行斷詞並選擇性地執行同義字展開、詞幹分析和停用字詞(非搜尋字) 處理 2009/01/10 Paul, Tiffany @ NSYSU MIS

Paul, Tiffany @ NSYSU MIS SQL Server2008  全文檢索引擎 全文檢索引擎支援索引與查詢兩項作業 索引: 當資料經過篩選而且文字經過斷詞處理之後,SQL Server 處理序就會接收結果並建立它們的索引 查詢: 全文檢索引擎會處理全文檢索搜尋查詢,並且判斷基底資料表中的哪些項目 (資料列或文件) 符合全文檢索選取準則 2009/01/10 Paul, Tiffany @ NSYSU MIS

Paul, Tiffany @ NSYSU MIS 設定全文檢索語言元件 全文檢索索引所包含的每個資料行都與 Microsoft Windows 地區設定識別碼 (LCID) 相關聯 識別碼就等於全文檢索搜尋所支援的語言 例如,LCID 1033 等於美式英文,而 LCID 2057 等於英式英文。 以英文地區(LCID 1033或LCID 2057)設定為例,"a"、"and"、"is" 和 "the" 都會被視為停用字詞 2009/01/10 Paul, Tiffany @ NSYSU MIS

Paul, Tiffany @ NSYSU MIS 設定全文檢索語言元件(續) 斷詞工具(Word Breaker) 對於給定的語言而言,斷詞工具會根據語言的語彙規則,判斷文字分界存在的位置,藉以識別個別單字。 每個”單字” 也稱為 Token 「字幹分析器」(Stemmer) 會根據該語言的規則來產生特定單字的字形變化 例如,"running"、"ran" 和 "runner" 是 "run" 單字的不同形態 2009/01/10 Paul, Tiffany @ NSYSU MIS

Paul, Tiffany @ NSYSU MIS 母體擴展(Population) 建立與維護全文檢索索引的程序稱為「母體擴展」(Population) 也稱為「搜耙」(Crawl) 有三種類型: 完整母體擴展 以變更追蹤為基礎的母體擴展 以時間戳記為基礎的累加母體擴展 2009/01/10 Paul, Tiffany @ NSYSU MIS

Paul, Tiffany @ NSYSU MIS 建立與維護全文檢索索引語法 建立全文檢索索引 CREATE FULLTEXT INDEX (Transact-SQL) 更改全文檢索索引 ALTER FULLTEXT INDEX (Transact-SQL) 卸除全文檢索索引 DROP FULLTEXT INDEX (Transact-SQL) 2009/01/10 Paul, Tiffany @ NSYSU MIS

全文檢索述詞 CONTAINS 和 FREETEXT CONTAINS 和 FREETEXT 都是在SELECT陳述式的WHERE或HAVING子句中指定的 可與任何其他 Transact-SQL述詞結合,例如LIKE 和 BETWEEN 2009/01/10 Paul, Tiffany @ NSYSU MIS

全文檢索述詞 CONTAINS 和 FREETEXT(續) 使用 CONTAINS (或 CONTAINSTABLE) 以進行下列各種比對: 單字和片語的精確或模糊 (較不精確) 比對 單字彼此在一定距離之間的接近度比對 單字和片語加權比對 FREETEXT (或 FREETEXTTABLE) 用來比對指定之單字、片語或句子「Freetext 字串」的意義 但不比對確切的用字 2009/01/10 Paul, Tiffany @ NSYSU MIS

範例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, Tiffany @ NSYSU MIS

範例2 -使用 FREETEXT 搜尋含有指定字元值的單字 會搜尋包含 vital、safety 和 components 相關單字的所有文件: 2009/01/10 Paul, Tiffany @ NSYSU MIS

全文檢索函數 CONTAINSTABLE和FREETEXTTABLE 如同 SELECT … FROM 子句中的一般資料表名稱 傳回符合全文檢索查詢之零、一或多個資料列的資料表。 針對每個資料列傳回一個相關次序值 (RANK) 和全文檢索索引鍵 (KEY) KEY :傳回所傳回之資料列的唯一值 RANK :傳回每個資料列的「等級值」(Rank Value) 表示資料列與選取準則的符合程度 top_n_by_rank參數-限制要傳回的相符項目數 2009/01/10 Paul, Tiffany @ NSYSU MIS

Paul, Tiffany @ NSYSU MIS  範例3 -使用 CONTAINSTABLE 傳回所有食物種類的描述與類別名稱 其中 Description 資料行包含 “sweet and savory” 的單字,近似於 “sauces” 或 “candies”。 所有類別目錄名稱是 “Seafood” 的資料列都會被略過。 只會傳回等級值大於或等於 2 的資料列 2009/01/10 Paul, Tiffany @ NSYSU MIS

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, Tiffany @ NSYSU MIS

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, Tiffany @ NSYSU MIS

使用布林運算子 - 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, Tiffany @ NSYSU MIS

Paul, Tiffany @ NSYSU MIS 全文檢索查詢的效能微調與最佳化 使用 ALTER INDEX REORGANIZE 來重組基底資料表的索引 使用 ALTER FULLTEXT CATALOG REORGANIZE 來重新組織全文檢索目錄 將選擇的全文檢索索引鍵資料行限制為小資料行 使用整數全文檢索索引鍵 將多個 CONTAINS 述詞結合為一個 CONTAINS 述詞 2009/01/10 Paul, Tiffany @ NSYSU MIS

Paul, Tiffany @ NSYSU MIS 全文檢索查詢的效能微調與最佳化 (續) 如果只需要全文檢索索引鍵或等級資訊,則分別使用 CONTAINSTABLE 或 FREETEXTTABLE,不要使用 CONTAINS 或 FREETEXT 若要限制結果並增加效能,使用top_n_by_rank 參數 若要減少片段的數目,可以使用 ALTER FULLTEXT CATALOG Transact-SQL 陳述式的 REORGANIZE 選項來重新組織全文檢索目錄 2009/01/10 Paul, Tiffany @ NSYSU MIS

Paul, Tiffany @ NSYSU MIS SQL Server全文檢索服務相關實作1 XML一直是微軟所領導的技術,XML具備易解讀、標準開放、可延伸、跨平台的優點 一般企業級的系統與應用程式大部份也都與XML以及Web Service整合 XML以垂直、階層、遞迴方式描述資料是很適合應用於全文檢索機制中 2009/01/10 Paul, Tiffany @ NSYSU MIS

SQL Server全文檢索服務相關實作2-1 - 建立全文檢索目錄 以精靈方式產生 在 [物件總管] 中,展開伺服器,並展開 [資料庫],然後展開您要在其中建立全文檢索目錄的資料庫 展開 [儲存體],然後以滑鼠右鍵按一下 [全文檢索目錄] 選取 [新增全文檢索目錄] 在 [新增全文檢索目錄] 對話方塊中,為您要重新建立的目錄指定資訊 按一下 [確定] 2009/01/10 Paul, Tiffany @ NSYSU MIS

SQL Server全文檢索服務相關實作2-2 -全文內文清單選項 2009/01/10 Paul, Tiffany @ NSYSU MIS

SQL Server全文檢索服務相關實作2-3 -全文目錄視窗 2009/01/10 Paul, Tiffany @ NSYSU MIS

SQL Server全文檢索服務相關實作2-4 - 建立全文檢索目錄 使用 T-SQL 敘述(直接由指令產生) CREATE FULLTEXT CATALOG AdventureWorksFTCat WITH ACCENT_SENSITIVITY = OFF AS DEFAULT AUTHORIZATION dbo; 2009/01/10 Paul, Tiffany @ NSYSU MIS

SQL Server全文檢索服務相關實作3-1 -建立全文索引 以精靈方式產生 在SQL Server 2008中,可以使用 Management Studio 中的全文檢索索引精靈來建立全文檢索索引 在 [物件總管] 中,以滑鼠右鍵按一下您要建立全文檢索索引的資料表,然後選取 [全文檢索索引] 選取 [定義全文檢索索引] 2009/01/10 Paul, Tiffany @ NSYSU MIS

SQL Server全文檢索服務相關實作3-2 -全文索引文件選單 2009/01/10 Paul, Tiffany @ NSYSU MIS

SQL Server全文檢索服務相關實作3-3 -選擇單一欄位唯一索引 2009/01/10 Paul, Tiffany @ NSYSU MIS

SQL Server全文檢索服務相關實作3-4 -選擇做為全文索引的欄位與定義Schema 2009/01/10 Paul, Tiffany @ NSYSU MIS

SQL Server全文檢索服務相關實作3-5 -選擇SQL Server 是否維護全文索引的log 2009/01/10 Paul, Tiffany @ NSYSU MIS

SQL Server全文檢索服務相關實作3-6 -指派全文索引到全文目錄 2009/01/10 Paul, Tiffany @ NSYSU MIS

SQL Server全文檢索服務相關實作3-7 -檢視先前全文索引精靈設定 2009/01/10 Paul, Tiffany @ NSYSU MIS

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, Tiffany @ NSYSU MIS

SQL Server全文檢索服務相關實作4-1 - FREETEXT 以簡單字元 ( character-based ) 為基礎方式 語法:找尋「sock」之範例 SELECT ProductModelID, Name, CatalogDescription, Instructions FROM Production.ProductModel WHERE FREETEXT(*, N'sock'); 2009/01/10 Paul, Tiffany @ NSYSU MIS

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, Tiffany @ NSYSU MIS

SQL Server全文檢索服務相關實作4-3 - CONTAINS 以字詞 ( word-based ) 為基礎方式 語法: SELECT ProductModelID, Name, CatalogDescription, Instructions FROM Production.ProductModel WHERE CONTAINS(*, N'weld'); 2009/01/10 Paul, Tiffany @ NSYSU MIS

SQL Server全文檢索服務相關實作4-4 - CONTAINS 搭配FORMSOF產生term SELECT ProductModelID, Name, CatalogDescription FROM Production.ProductModel WHERE CONTAINS ( ), N'FORMSOF(INFLECTIONAL, sport)' ); 2009/01/10 Paul, Tiffany @ NSYSU MIS

SQL Server全文檢索服務相關實作5-1 - XML與全文檢索 使用GUI定義XML 2009/01/10 Paul, Tiffany @ NSYSU MIS

SQL Server全文檢索服務相關實作5-2 -輸入資料到XML欄位 2009/01/10 Paul, Tiffany @ NSYSU MIS

SQL Server全文檢索服務相關實作5-3 -使用 XQuery XQuery 是可查詢結構化或半結構化 XML 資料的語言 利用 Database Engine 提供的 xml 資料類型支援,就可以在資料庫中儲存文件,然後使用 XQuery 進行查詢 XQuery 是以現有的 XPath 查詢語言為基礎,加上額外支援以獲取更佳的反覆運算、更好的排序結果,以及建構必要 XML 的能力。XQuery 可在 XQuery 資料模型上運作。 2009/01/10 Paul, Tiffany @ NSYSU MIS

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, Tiffany @ NSYSU MIS

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, Tiffany @ NSYSU MIS

Paul, Tiffany @ NSYSU MIS 參考文獻 英文: [1] Pro SQL Server 2008 XML, ch7- Indexing XML, p177-192 ,Apress , 2008 [2] Accelerated SQL Server , ch17 - SQL Server XML and XQuery Support , p515-552,Apress, 2008, http://www.springerlink.com/content/j704158050642l96/fulltext.pdf [3] SQL Server 2008 Transact-SQL Recipes , ch6 - Full-Text Search, Apress , p217-237, 2008 http://www.springerlink.com/content/vql7452131w6815k/fulltext.pdf [4] Pro T-SQL 2008 Programmer’s Guide, ch10 - Integrated Full-Text Search Apress, p273-298, 2008 http://www.springerlink.com/content/k12u8x8348014xx4/fulltext.pdf 中文: [胡述兆, 1995] 胡述兆,圖書館學與資訊科學大辭典,國立編譯館主編,台北市:漢美圖書,1995,頁669。 [林東清, 2008] 林東清著,資訊管理-- e化企業的核心競爭能力,台北市:智勝文化,2008,頁281 - 327。 [中文全文檢索搜索網, 2004 ] 中文搜索引擎技術揭密:系統架構,http://www.FullSearcher.Com/n200491114034735.asp [ 徐玉梅, 2002 ] 研究文獻全文資料庫建置與檢索之規劃研究,行政院國家科學委員會九十一年度科技行政研究發展報告,行政院國家科學委員會科學技術資料中心,http://web1.nsc.gov.tw/public/Data/85718153271.pdf 網站: [1] 全文檢索搜尋 (SQLServer) ,MSDN開發技術, http://msdn.microsoft.com/zh-tw/library/ms142571.aspx [2]微軟技術網站, http://technet.microsoft.com/zh-tw/library/aa337082.aspx [3]IBM Open Find, http://www.demos.ibm.com/on_demand/Demo/zh_tw/IBM_Demo_IBM_OmniFind_Yahoo_Edition-Dec06.html [4] Lucene, http://incubator.apache.org/lucene.net/ [5] Google, http://www.google.com.tw/ [6] Oracle , http://www.oracle.com/global/tw/index.html [7] MySQL, http://www.mysql.com/ [8] Wiki 「全文檢索」議題, http://zh.wikipedia.org/w/index.php?title=%E5%85%A8%E6%96%87%E6%AA%A2%E7%B4%A2&variant=zh-tw 2009/01/10 Paul, Tiffany @ NSYSU MIS

Paul, Tiffany @ NSYSU MIS Thanks 2009/01/10 Paul, Tiffany @ NSYSU MIS