人妖在线一区,国产日韩欧美一区二区综合在线,国产啪精品视频网站免费,欧美内射深插日本少妇

新聞動態(tài)

SQLServer 全文檢索(full-text)語法

發(fā)布日期:2022-01-21 15:10 | 文章來源:CSDN
like '%關鍵詞%',后者則是將一段文字分詞以后對每個詞進行搜索。 具體語法:
contains: SELECT 字段1,字段2
FROM 表名
WHERE contains(字段,'"詞一" or "詞二"') 根據(jù)查找結果的相似度排序
SELECT 字段1,字段2
FROM 表名
inner join containstable(表名, 字段,'"詞一" or "詞二"',10) as k
on 表名.id = k.[key]
order by k.RANK DESC
freetext:

SELECT 字段1,字段2
FROM 表名
WHERE freetext(字段,'詞一詞二') 根據(jù)查找結果的相似度排序
SELECT 字段1,字段2
FROM 表名
inner join freetexttable(表名, 字段,'詞一詞二',10) as k
on 表名.id = k.[key]
order by k.RANK DESC 上文中freetexttable或containstable的10表示取10條數(shù)據(jù)

最近搜索了一下全文檢索,發(fā)現(xiàn)了一些問題,現(xiàn)在總結如下: 全文索引和查詢概念(摘自SQL聯(lián)機幫助) 全文索引、查詢和同步化最主要的設計要求是,在注冊進行全文檢索的所有表上都有一個唯一的全文鍵列(或者單列主鍵)。全文索引對使用的重要字及其所在位置進行跟蹤。 例如,假定有一個對DevTools表的全文索引。全文索引可能指出在Abstract列的第423個和第982個單詞處找到了單詞Microsoft,所在的行與ProductID6關聯(lián)。該索引結構支持對所有包含被索引單詞的項進行有效檢索,以及高級檢索操作,如短語檢索和鄰近檢索。 為防止全文索引因包含很多對檢索沒有幫助的詞而變得臃腫,a、and、is或the這類額外的詞都忽略不計。例如,指定"theproductsorderedduringthesesummermonths"與指定"productsorderedduringsummermonths"是一樣的。有這兩個字符串的行都會被返回。 目錄\Mssql\Ftdata\Sqlserver\Config下提供了多種語言的干擾詞列表。在安裝帶有全文檢索支持的Microsoft®SQLServer™時會創(chuàng)建這個目錄,并同時安裝干擾詞文件。干擾詞文件可以編輯。例如,高技術公司的系統(tǒng)管理員可以把單詞computer添加到他們的干擾詞表中去。(如果編輯干擾詞文件,則必須在更改生效之前重新填充全文目錄。)下表顯示了干擾詞文件及其相應的語言。 干擾詞文件語言
-----------------------
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瑞典語
在處理全文查詢時,檢索引擎將滿足檢條件的行的鍵值返回給MicrosoftSQLServer。比如有一個SciFi表,其中Book_No列是主鍵列。 Book_NoWriterTitle
---------------------------------------------
A025AsimovFoundation'sEdge
A027AsimovFoundationandEmpire
C011ClarkeChildhood'sEnd
V109VerneMysteriousIsland
假定想使用一個全文檢索查詢來查找包含單詞Foundation的書名。在本例中,將從全文索引獲得值A025和A027。然后SQLServer用這些鍵值和其它欄的信息響應該查詢。 下表顯示了存儲全文索引數(shù)據(jù)所使用的語言。這些語言基于SQLServer安裝期間選擇的Unicode排序規(guī)則區(qū)域設置標識符。 Unicode排序規(guī)則區(qū)域設置標識符全文數(shù)據(jù)存儲所用的語言
------------------------------------------------------
中文注音符號(臺灣)繁體中文
漢語拼音簡體中文
中文筆畫簡體中文
中文筆畫(臺灣)繁體中文
荷蘭語荷蘭語
英語(英國)英語(英國)
法語法語
通用Unicode英語(美國)
德語德語
德文電話簿德語
意大利語意大利語
日語日語
日語Unicode日語
韓文韓文
韓文Unicode韓文
西班牙語(現(xiàn)代)西班牙語
瑞典/芬蘭語瑞典語 此列表中沒有的其它所有Unicode排序規(guī)則區(qū)域設置標識符值都映射到使用空格分隔單詞的中性語言單詞的斷字符和詞干分隔符。 說明Unicode排序規(guī)則區(qū)域設置標識符設置用于所有可進行全文索引的數(shù)據(jù)類型(如char、nchar等)。如果為char、varchar或text類型列的排序次序設置的語言類型,不是Unicode排序規(guī)則區(qū)域設置標識符語言,那么在對char、varchar和text類型的列進行全文索引和查詢時,仍然使用Unicode排序規(guī)則區(qū)域設置標識符值。 創(chuàng)建全文索引(以索引image列為例,其他類型字段大致一樣) 標題全文索引image列,全攻略!
作者pengdali[原作]
關鍵字全文索引image
今天“百年不遇”的停電了,看了一天書。晚上搞了一下全文索引,決定把心得貼出來,我盡量寫的詳細,大家共同學習,歡迎指正! 1、啟動MicrosoftSearch服務
開始菜單-->SQL程序組-->服務管理器-->下拉筐-->MicrosoftSearch服務-->啟動它 2、
..\MicrosoftSQLServer\MSSQL\FTDATA\SQLServer\Config\目錄里建一個非空noise.chs文件
非空noise.chs文件,也有人說是空的noise.chs文件,但我每次都往里寫幾個沒用的字母。 3、建立環(huán)境
打開查詢分析器-->執(zhí)行下列腳本:
--------------------------------------------
createdatabasetest---創(chuàng)建test數(shù)據(jù)庫
usetest---選擇test數(shù)據(jù)庫
createtabledali(IDintnotnullprimarykey,MyImageimage,FileTypevarchar(255),FileNmaevarchar(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@Keysysname;select@Key=c.namefromsyscolumnsa,sysconstraintsb,sysobjectscwherea.id=object_id('dali')anda.name='ID'anda.id=b.idandb.constid=c.idandc.namelike'PK%'
execsp_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ù)
建立下面這個存儲過程
--------------------------------------------------
CREATEPROCEDUREsp_textcopy
@srvnamevarchar(30),
@loginvarchar(30),
@passwordvarchar(30),
@dbnamevarchar(30),
@tbnamevarchar(30),
@colnamevarchar(30),
@filenamevarchar(30),
@whereclausevarchar(40),
@directionchar(1)
AS
/*這是使用textcopy工具將文件插入到數(shù)據(jù)庫中,如果有前臺工具可以用前臺開發(fā)工具將文件插入,這里為了演示*/
DECLARE@exec_strvarchar(255)
SELECT@exec_str='textcopy/S'+@srvname+'/U'+@login+'/P'+@password+'/D'+@dbname+'/T'+@tbname+'/C'+@colname+'/W"'+@whereclause+'"/F"'+@filename+'"/'+@direction
EXECmaster..xp_cmdshell@exec_str
---------------------------------------------------- insertdalivalues(1,0x,'doc','大力的doc')---其中第二列是0x它是一個16進制數(shù)對應image列,是必須的,不要寫null,第三列是文件類型,既擴展名 sp_textcopy'你的服務器名','sa','你的密碼','test','dali','MyImage','c:\大力的doc.doc','whereID=1','I'
-------依次參數(shù)是:實例名,用戶名,密碼,數(shù)據(jù)庫名,表名,image列名,路徑及文件名,條件(你必須保證它只選擇一行),I
---------------------------------------------------------------------------------------------------------------------
insertdalivalues(2,0x,'bmp','圖片')
sp_textcopy'你的服務器名','sa','你的密碼','test','dali','MyImage','c:\圖片.bmp','whereID=2','I'--注意條件是ID=2 insertdalivalues(3,0x,'xls','Excel文件')
sp_textcopy'你的服務器名','sa','你的密碼','test','dali','MyImage','c:\Excel文件.xls','whereID=3','I'--注意條件是ID=3 insertdalivalues(4,0x,'htm','網(wǎng)頁')
sp_textcopy'你的服務器名','sa','你的密碼','test','dali','MyImage','c:\網(wǎng)頁.htm','whereID=4','I'--注意條件是ID=4 ----------上面的語句,要保證類型一樣,路徑正確,條件唯一正確應該就可以了 6、填充全文索引 sp_fulltext_table'dali','start_full'---第一個參數(shù)是表名,第二個參數(shù)是啟動表的全文索引的完全填充 7、可以開始你的實驗了 select*fromdaliwherecontains(MyImage,'J老師') select*fromdaliwherecontains(MyImage,'海老師') ------END----------
--調試環(huán)境:SQLServer2000企業(yè)版、Windows2000高級服務器 全文索引中的幾個問題: 1.搜索時出現(xiàn)錯誤:
服務器:消息7619,級別16,狀態(tài)1,行2
查詢子句只包含被忽略的詞 這種情況修改\Mssql\Ftdata\Sqlserver\Config下對應語言的干擾詞列表文件 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è)管理器--展開你的數(shù)據(jù)庫--右鍵全文目錄--重建全部全文目錄 3.表中的數(shù)據(jù)改變后,檢索不到
方法1.右鍵你的表--全文索引表--啟用增量填充
方法2.右鍵你的表--全文索引表--更改跟蹤,這樣以后的修改會自動填充(有一定延遲) 4.sql2000才支持對image列的全文檢索

版權聲明:本站文章來源標注為YINGSOO的內容版權均為本站所有,歡迎引用、轉載,請保持原文完整并注明來源及原文鏈接。禁止復制或仿造本網(wǎng)站,禁止在非www.sddonglingsh.com所屬的服務器上建立鏡像,否則將依法追究法律責任。本站部分內容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學習參考,不代表本站立場,如有內容涉嫌侵權,請聯(lián)系alex-e#qq.com處理。

實時開通

自選配置、實時開通

免備案

全球線路精選!

全天候客戶服務

7x24全年不間斷在線

專屬顧問服務

1對1客戶咨詢顧問

在線
客服

在線客服:7*24小時在線

客服
熱線

400-630-3752
7*24小時客服服務熱線

關注
微信

關注官方微信
頂部