<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    blog.Toby

      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
      130 隨筆 :: 2 文章 :: 150 評論 :: 0 Trackbacks

    原帖地址:http://community.csdn.net/Expert/topic/3295/3295983.xml?temp=.6606409

    全文索引和查詢概念(摘自SQL 聯(lián)機幫助)

    全文索引、查詢和同步化最主要的設(shè)計要求是,在注冊進行全文檢索的所有表上都有一個唯一的全文鍵列(或者單列主鍵)。全文索引對使用的重要字及其所在位置進行跟蹤。

    例如,假定有一個對 DevTools 表的全文索引。全文索引可能指出在 Abstract 列的第 423 個和第 982 個單詞處找到了單詞 Microsoft,所在的行與 ProductID 6 關(guān)聯(lián)。該索引結(jié)構(gòu)支持對所有包含被索引單詞的項進行有效檢索,以及高級檢索操作,如短語檢索和鄰近檢索。

    為防止全文索引因包含很多對檢索沒有幫助的詞而變得臃腫,a、and、is 或 the 這類額外的詞都忽略不計。例如,指定"the products ordered during these summer months"與指定"products ordered during summer months"是一樣的。有這兩個字符串的行都會被返回。

    目錄 \Mssql\Ftdata\Sqlserver\Config 下提供了多種語言的干擾詞列表。在安裝帶有全文檢索支持的 Microsoft&reg; SQL Server&#8482; 時會創(chuàng)建這個目錄,并同時安裝干擾詞文件。干擾詞文件可以編輯。例如,高技術(shù)公司的系統(tǒng)管理員可以把單詞 computer 添加到他們的干擾詞表中去。(如果編輯干擾詞文件,則必須在更改生效之前重新填充全文目錄。)下表顯示了干擾詞文件及其相應(yīng)的語言。

    干擾詞文件????? 語言
    -------------- ---------
    Noise.chs????? 簡體中文
    Noise.cht????? 繁體中文
    Noise.dat????? 語言中性
    Noise.deu????? 德語
    Noise.eng????? 英語(英國)
    Noise.enu????? 英語(美國)
    Noise.esn????? 西班牙語
    Noise.fra????? 法語
    Noise.ita????? 意大利語
    Noise.jpn????? 日語
    Noise.kor????? 韓文
    Noise.nld????? 荷蘭語
    Noise.sve????? 瑞典語


    在處理全文查詢時,檢索引擎將滿足檢條件的行的鍵值返回給 Microsoft SQL Server。比如有一個 SciFi 表,其中 Book_No 列是主鍵列。

    Book_No?? Writer???? Title
    -------- ----------- --------------------------
    A025???? Asimov????? Foundation's Edge
    A027???? Asimov????? Foundation and Empire
    C011???? Clarke????? Childhood's End
    V109???? Verne?????? Mysterious Island


    假定想使用一個全文檢索查詢來查找包含單詞 Foundation 的書名。在本例中,將從全文索引獲得值 A025 和 A027。然后 SQL Server 用這些鍵值和其它欄的信息響應(yīng)該查詢。

    下表顯示了存儲全文索引數(shù)據(jù)所使用的語言。這些語言基于 SQL Server 安裝期間選擇的 Unicode 排序規(guī)則區(qū)域設(shè)置標識符。

    Unicode 排序規(guī)則區(qū)域設(shè)置標識符??? 全文數(shù)據(jù)存儲所用的語言
    ------------------------------- -----------------------
    中文注音符號(臺灣)????????????? 繁體中文?
    漢語拼音???????????????????????? 簡體中文?
    中文筆畫???????????????????????? 簡體中文?
    中文筆畫(臺灣)???????????????? 繁體中文?
    荷蘭語?????????????????????????? 荷蘭語?
    英語(英國)???????????????????? 英語(英國)?
    法語??????????????????????????? 法語?
    通用 Unicode??????????????????? 英語(美國)?
    德語??????????????????????????? 德語?
    德文電話簿?????????????????????? 德語?
    意大利語???????????????????????? 意大利語?
    日語??????????????????????????? 日語?
    日語 Unicode??????????????????? 日語?
    韓文??????????????????????????? 韓文?
    韓文 Unicode??????????????????? 韓文?
    西班牙語(現(xiàn)代)???????????????? 西班牙語?
    瑞典/芬蘭語????????????????????? 瑞典語?

    此列表中沒有的其它所有 Unicode 排序規(guī)則區(qū)域設(shè)置標識符值都映射到使用空格分隔單詞的中性語言單詞的斷字符和詞干分隔符。

    說明? Unicode 排序規(guī)則區(qū)域設(shè)置標識符設(shè)置用于所有可進行全文索引的數(shù)據(jù)類型(如 char、nchar 等)。如果為 char、varchar 或 text 類型列的排序次序設(shè)置的語言類型,不是 Unicode 排序規(guī)則區(qū)域設(shè)置標識符語言,那么在對 char、varchar 和 text 類型的列進行全文索引和查詢時,仍然使用 Unicode 排序規(guī)則區(qū)域設(shè)置標識符值。

    創(chuàng)建全文索引(以索引image列為例,其他類型字段大致一樣)

    標題???? 全文索引image列,全攻略!
    作者???? pengdali [原作]?
    關(guān)鍵字?? 全文索引 image


    ?今天“百年不遇”的停電了,看了一天書。晚上搞了一下全文索引,決定把心得貼出來,我盡量寫的詳細,大家共同學(xué)習(xí),歡迎指正!

    1、啟動 Microsoft Search 服務(wù)
    ?? 開始菜單-->SQL程序組-->服務(wù)管理器-->下拉筐-->Microsoft Search 服務(wù)-->啟動它

    2、
    ? ..\Microsoft SQL Server\MSSQL\FTDATA\SQLServer\Config\目錄里建一個非空noise.chs文件
    ? 非空noise.chs文件,也有人說是空的noise.chs文件,但我每次都往里寫幾個沒用的字母。

    3、建立環(huán)境
    ?? 打開查詢分析器-->執(zhí)行下列腳本:
    --------------------------------------------
    create database test ---創(chuàng)建test數(shù)據(jù)庫
    use test???????????? ---選擇test數(shù)據(jù)庫
    create table? dali (ID int not null primary key,MyImage image,FileType varchar(255),FileNmae varchar(255)) ---創(chuàng)建dali表
    --dali表中 Id,MyImage,FileType 三列是必須的,因為要對image列索引的話,必須要有一個主鍵列,一個image列,一個存放文件類型的列
    --我們知道在windows系統(tǒng)中文件類型是靠擴展名來區(qū)分的所以FileType列也就是用來放 文件的擴展名
    --------------------------------------------

    sp_fulltext_database 'enable' --為全文索引啟用數(shù)據(jù)庫
    sp_fulltext_catalog 'My_FullDir', 'create'? ---創(chuàng)建一個叫My_FullDif的全文目錄

    declare @Key sysname ; select @Key=c.name from syscolumns a,sysconstraints b,sysobjects c where a.id=object_id('dali') and a.name='ID' and a.id=b.id and b.constid=c.id and c.name like 'PK%'
    exec sp_fulltext_table 'dali','create','My_FullDir',@Key? ----這兩句是為全文索引,對表進行標記

    sp_fulltext_column 'dali','MyImage','add',0x0804,'FileType'? ---這句是指定MyImage列為全文索引列,FileType是類型列
    ------------------------------------------------
    4、在c盤下放一個擴展名為doc的word文件,一個擴展名為xls的excel文件,一個擴展名為htm的網(wǎng)頁文件,個擴展名為bmp的圖片
    ?? 共4個,大家可根據(jù)實際情況放入!

    5、插入數(shù)據(jù)
    ? 建立下面這個存儲過程
    --------------------------------------------------
    CREATE PROCEDURE sp_textcopy
    ? @srvname??? varchar (30),
    ? @login????? varchar (30),
    ? @password??? varchar (30),
    ? @dbname????? varchar (30),
    ? @tbname????? varchar (30),
    ? @colname??? varchar (30),
    ? @filename??? varchar (30),
    ? @whereclause varchar (40),
    ? @direction? char(1)
    AS
    /* 這是使用textcopy工具將文件插入到數(shù)據(jù)庫中,如果有前臺工具可以用前臺開發(fā)工具將文件插入,這里為了演示 */
    DECLARE @exec_str varchar (255)
    SELECT @exec_str='textcopy /S '+@srvname+' /U '+@login+' /P '+@password+' /D '+@dbname+'/T'+@tbname+' /C '+@colname+' /W"'+@whereclause+'" /F"'+@filename+'" /'+@direction
    EXEC master..xp_cmdshell @exec_str
    ----------------------------------------------------

    insert dali values(1,0x,'doc','大力的doc') ---其中第二列是 0x 它是一個16進制數(shù)對應(yīng)image列,是必須的,不要寫null,第三列是文件類型,既擴展名

    sp_textcopy '你的服務(wù)器名','sa','你的密碼','test','dali','MyImage','c:\大力的doc.doc','where ID=1','I'
    -------依次參數(shù)是:實例名,用戶名,密碼,數(shù)據(jù)庫名,表名,image列名,路徑及文件名,條件(你必須保證它只選擇一行),I
    ---------------------------------------------------------------------------------------------------------------------
    insert dali values(2,0x,'bmp','圖片')
    sp_textcopy '你的服務(wù)器名','sa','你的密碼','test','dali','MyImage','c:\圖片.bmp','where ID=2','I' --注意條件是 ID=2

    insert dali values(3,0x,'xls','Excel文件')
    sp_textcopy '你的服務(wù)器名','sa','你的密碼','test','dali','MyImage','c:\Excel文件.xls','where ID=3','I' --注意條件是 ID=3

    insert dali values(4,0x,'htm','網(wǎng)頁')
    sp_textcopy '你的服務(wù)器名','sa','你的密碼','test','dali','MyImage','c:\網(wǎng)頁.htm','where ID=4','I' --注意條件是 ID=4

    ----------上面的語句,要保證類型一樣,路徑正確,條件唯一正確應(yīng)該就可以了

    6、填充全文索引

    sp_fulltext_table 'dali','start_full' ---第一個參數(shù)是表名,第二個參數(shù)是啟動表的全文索引的完全填充

    7、可以開始你的實驗了

    select * from dali where contains(MyImage,'J老師')

    select * from dali where contains(MyImage,'海老師')

    ------END----------
    --調(diào)試環(huán)境:SQLServer2000企業(yè)版、Windows2000高級服務(wù)器

    全文索引中的幾個問題:

    1.搜索時出現(xiàn)錯誤:
    ? 服務(wù)器: 消息 7619,級別 16,狀態(tài) 1,行 2
    ? 查詢子句只包含被忽略的詞

    ? 這種情況修改 \Mssql\Ftdata\Sqlserver\Config 下對應(yīng)語言的干擾詞列表文件

    2.修改了干擾詞文件,查詢中文時仍然出現(xiàn)上述問題
    ? a.首先檢查你的SQL有沒有安裝最新的補丁,檢查的方法是在查詢分析器中運行:
    ??? select @@version
    ??? 如果出來的版本號是8.00.760以下,則表明你未安裝sp3的補丁,要裝上.

    ??? SQL補丁下載:
    ??? http://www.microsoft.com/downloads/details.aspx?displaylang=zh-cn&FamilyID=9032f608-160a-4537-a2b6-4cb265b80766

    ??? 注意下載后,執(zhí)行的時候是解壓,要在解壓后的目錄中執(zhí)行setup.bat才是真正的安裝
    ?
    ? b.配置全文索引時,單詞斷字符選擇"中文(中國)"

    ? c.Noise.chs文件中至少有一個單詞,例如:?

    ? d.如果在全文檢索時,你能正常修改干擾詞文件,說明你的全文檢索沒有使用上這個文件
    ??? 如果你配置的全文檢索應(yīng)該要用到這個文件,那就在
    ??? 企業(yè)管理器--展開你的數(shù)據(jù)庫--右鍵全文目錄--重建全部全文目錄

    3.表中的數(shù)據(jù)改變后,檢索不到
    ? 方法1. 右鍵你的表--全文索引表--啟用增量填充
    ? 方法2. 右鍵你的表--全文索引表--更改跟蹤,這樣以后的修改會自動填充(有一定延遲)

    4.sql2000才支持對image列的全文檢索

    熟悉了以下存儲過程,對全文索引就比較熟練了

    全文檢索過程 --摘自聯(lián)機叢書
    sp_fulltext_catalog sp_help_fulltext_catalogs_cursor
    sp_fulltext_column sp_help_fulltext_columns
    sp_fulltext_database sp_help_fulltext_columns_cursor
    sp_fulltext_service sp_help_fulltext_tables
    sp_fulltext_table sp_help_fulltext_tables_cursor
    sp_help_fulltext_catalogs

    FreeTableText 主要是用來做模糊查詢的:

    http://www.microsoft.com/china/msdn/archives/library/dnsql2k/html/sql_fulltextsearch.asp



    Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=388810



    EXEC sp_fulltext_table 'tMotifTalbe_D(表名)', 'drop'--刪除表索引
    EXEC sp_help_fulltext_catalogs --查看索引目錄及名稱
    EXEC sp_fulltext_catalog 'Motif(索引名稱)', 'drop(動作)'? --刪除全文目錄

    exec sp_fulltext_catalog 'Motif(索引名稱)', 'create(動作)', 'e:\web_data\zsk_data(存放物理路徑)' --創(chuàng)建全文錄
    exec sp_fulltext_table 'tMotifTalbe_D(表名)', 'create(動作)', 'Motif(索引名稱)','PK_tMotifTalbe_D(單健索引名稱)'? --創(chuàng)建索引約束
    exec sp_fulltext_column 'tMotifTalbe_D(表名)', 'KTitles(字段名)', 'add(動作)'--添加全文索引列

    posted on 2007-02-01 15:25 渠上月 閱讀(368) 評論(0)  編輯  收藏 所屬分類: sql (sqlServer)
    主站蜘蛛池模板: 国产精品免费高清在线观看| 成年午夜视频免费观看视频| 免费毛片a线观看| 久久综合国产乱子伦精品免费 | 免费一级毛suv好看的国产网站| 国产午夜无码片免费| 啦啦啦完整版免费视频在线观看| 免费无码又爽又刺激高潮| 国产亚洲色婷婷久久99精品91| 亚洲综合国产精品| 国产亚洲午夜精品| 99久热只有精品视频免费看 | 免费中文熟妇在线影片| 亚洲一区视频在线播放| 亚洲天堂久久精品| 亚洲AV成人无码久久WWW| 两个人看的www免费视频| 青春禁区视频在线观看直播免费| 亚洲人成网站18禁止一区| 亚洲色成人网一二三区| 午夜在线免费视频| 一二三四在线观看免费高清中文在线观看 | 日本亚洲免费无线码| 久久成人永久免费播放| 嫩草影院在线免费观看| 亚洲一区二区中文| gogo免费在线观看| 免费毛片在线播放| 亚洲无限乱码一二三四区| 中出五十路免费视频| 免费国产a国产片高清| 亚洲jjzzjjzz在线观看| 久久精品中文字幕免费| 国产精品亚洲mnbav网站 | 亚洲人成人无码.www石榴| 久久久久久AV无码免费网站下载| 免费一级毛片在级播放| 在线a亚洲老鸭窝天堂av高清| 91av免费观看| 国产亚洲精品a在线无码| 边摸边吃奶边做爽免费视频99 |