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