創(chuàng)建SQL Server全文檢索的2方案
此文章主要向大家講述的是創(chuàng)建SQL Server全文檢索的正確操作方案,如果你對(duì)創(chuàng)建SQL Server全文檢索的正確操作步驟有興趣了解的話,以下的文章你就可以對(duì)其進(jìn)行點(diǎn)擊觀看了,以下就是文章的主要方案的描述。
方法一:先啟動(dòng)全文索引服務(wù),查看當(dāng)前數(shù)據(jù)庫的狀態(tài)SELECT DATABASEPROPERTY ('pubs','IsFulltextEnabled'),打開FullText功能sp_fulltext_databse 'enable',關(guān)閉此功能sp_fulltext_databse 'disable',在所有創(chuàng)建的表上建唯一索引(若已有主鍵索引可省),在表上點(diǎn)右鍵進(jìn)入定義全文索引向?qū)?chuàng)建。
方法二:1、首先創(chuàng)建一個(gè)全文目錄,一個(gè)全文目錄可以包含多個(gè)全文索引,但一個(gè)全文索引只能用于構(gòu)成一個(gè)全文目錄。每個(gè)數(shù)據(jù)庫可以不包含全文目錄或包含多個(gè)全文目錄。as default參數(shù)表明把此全文目錄作為默認(rèn)的全文目錄。
- Create fulltext catalog DocumentCatalog as default
2、然后創(chuàng)建唯一非聚集索引。
- create unique index T_DocumentsContent_VerID on T_DocumentsContent(VerID)
這個(gè)一般把你要全文索引的表上的主鍵作為唯一非聚集索引。該索引將強(qiáng)制插入列中的數(shù)據(jù)具有唯一性。一般都是主鍵符合這個(gè)要求。
3、***一步就是創(chuàng)建全文索引
- Create FULLTEXT INDEX ON T_DocumentsContent(DOCUCONTENT TYPE COLUMN ExtendedName)
- key index T_DocumentsContent_VerID on DocumentCatalog
- with change_tracking auto
T_DocumentsContent:用于全文索引的表明
DocuContent:用于SQL Server全文檢索的字段
如果用于SQL Server全文檢索的字段是二進(jìn)制流文件,那么要通過指定這個(gè)二進(jìn)制流文件的擴(kuò)展名由哪個(gè)列提供數(shù)據(jù)。如上例的Type Column ExtendedName,表明DocuContent的類型由ExtendedName列提供
key index用來指定全文索引表唯一鍵索引的名稱
on DocumentCatalog:表明這個(gè)全文索引是建立在哪個(gè)全文目錄上
with Change_Tracking:指定 SQL Server 是否維護(hù)一份對(duì)索引數(shù)據(jù)的全部更改的列表。更改跟蹤不會(huì)記錄通過 WRITETEXT 和 UPDATETEXT 進(jìn)行的數(shù)據(jù)更改。他有幾個(gè)選項(xiàng)
1. MANUAL: 指定是使用 SQL Server 代理按計(jì)劃傳播更改跟蹤日志,還是由用戶手動(dòng)進(jìn)行傳播。
2.AUTO:指定在關(guān)聯(lián)的表中修改了數(shù)據(jù)時(shí),SQL Server 自動(dòng)更新全文索引。默認(rèn)值為 AUTO。
3.OFF [ ,NO POPULATION] 指定 SQL Server 不保留對(duì)索引數(shù)據(jù)的更改的列表。僅當(dāng)ANGE_TRACKING 為 OFF 時(shí),才能使用 NO POPULATION 選項(xiàng)。如果指定了 NO POPULATION,則 SQL Server 在創(chuàng)建索引后不會(huì)對(duì)其進(jìn)行填充。
只有在用戶使用 START FULL 或 INCREMENTAL POPULATION 子句執(zhí)行 ALTER FULLTEXT INDEX 命令后,才會(huì)填充索引。如果未指定 NO POPULATION,則 SQL Server 創(chuàng)建索引后將對(duì)其進(jìn)行完全填充
當(dāng)然如果需要使用全文索引需要把全文索引服務(wù)啟動(dòng),就是SQL Server FullText Search這個(gè)服務(wù)。注意Sql Express版本不能使用全文索引。
***剩下如何進(jìn)行全文檢索的查詢了。在查詢種我們不能使用like關(guān)鍵字來進(jìn)行SQL Server全文檢索,應(yīng)該使用Contains謂詞,他的***個(gè)參數(shù)是你要全文檢索的列名,可以指定多個(gè)列,用都好分割,并且必須用小括號(hào)括起來,第二個(gè)參數(shù)是需要搜索的文本,第二個(gè)參數(shù)前后必須用單引號(hào)包含起來,里面查詢的文本可用引號(hào)包含,并且可以使用通配符和條件語句,如
where Contains(a.Content, '"中國*" or "武漢"')
條件語句可以用符號(hào)來代理如AND可以用&來代替,具體參看SQLServer的幫助文檔。
第三個(gè)參數(shù)是查詢的語言。如果一個(gè)列里面存儲(chǔ)了多種語言,允許用戶指定搜索的語言。
除了Contains謂詞可以用于全文檢索FreeText也可以進(jìn)行SQL Server全文檢索,但次謂詞用于搜索含有基于字符的數(shù)據(jù)類型的列,好像不能搜索二進(jìn)制流的列,但幫助文檔卻又說支持Image的列。但是FreeText的搜索精度沒有Contains的謂詞高,推薦使用Contains謂詞。
【編輯推薦】
- SQL Server分布式事務(wù)的6解決方案
- SQL Server數(shù)據(jù)庫與EXCEL數(shù)據(jù)導(dǎo)入與導(dǎo)出
- SQL Server 2000 安裝時(shí)的一些癥狀歸納
- SQL Server加密的實(shí)際操作步驟
- SQL Server 2005模糊查找包的最簡單模式