SQL?Server的全文搜索功能
一、使用SQL Server全文搜索配置
要使用SQL Server的全文搜索服務(wù),需要進(jìn)行如下配置。
1、開啟全文搜索服務(wù):

2、開啟數(shù)據(jù)庫(kù)的全文索引功能:
--開啟數(shù)據(jù)庫(kù)的全文搜索功能 EXEC sp_fulltext_database 'enable';
3、創(chuàng)建全文索引目錄:
--創(chuàng)建全文索引目錄
CREATE FULLTEXT CATALOG IndexCatalog
ON FILEGROUP [PRIMARY]
IN PATH 'E:\SQLServerIndex'
AS DEFAULT4、創(chuàng)建唯一索引:
--創(chuàng)建唯一索引 CREATE UNIQUE NONCLUSTERED INDEX IndexContent ON Article(ArticleContent ASC)
5、創(chuàng)建全文索引:
--創(chuàng)建全文索引 CREATE FULLTEXT INDEX ON Article (ArticleContent) KEY INDEX IndexContent ON IndexCatalog --IndexContent是唯一索引名
二、使用全文搜索
CONTAINS搜索方式
1.簡(jiǎn)單詞搜索
- 搜索一個(gè)或多個(gè)特定的詞或短語(yǔ)。詞可以包括一個(gè)或多個(gè)字符,中間沒(méi)有空格或標(biāo)點(diǎn)。短語(yǔ)可以由空格分隔的多個(gè)詞組成,但詞之間可以有標(biāo)點(diǎn)也可以沒(méi)標(biāo)點(diǎn):
--搜索文章內(nèi)容含有張三或者李四的記錄 SELECT * FROM Article WHERE CONTAINS(ArticleContent,'"張三" OR "李四"')
2.前綴詞搜索的方式
- 搜索指定文本開頭的詞或短語(yǔ),前綴詞的搜索方式主要是用在搜索英文中,例如搜索以“do”開頭的單詞,則可以將doctor、document、download等單詞都搜索出來(lái)。
--搜索文章內(nèi)容中含有以'認(rèn)'開始的詞的記錄 SELECT * FROM Article WHERE CONTAINS(ArticleContent,'"認(rèn)*"') --認(rèn)為,認(rèn)識(shí)
3.加權(quán)詞搜索的方式
- 給多個(gè)搜索條件加上權(quán)值,加權(quán)值越高的記錄排在越前面,當(dāng)以多個(gè)字符串作為搜索條件搜索記錄時(shí),可以為不同的字符串加上一個(gè)加權(quán)值,這個(gè)加權(quán)值是介于0和1之間的數(shù)值,加權(quán)值越高的記錄排在越前面。事實(shí)上在該SELECT語(yǔ)句的返回結(jié)果集里,并沒(méi)有按加權(quán)值的大小來(lái)排序,因?yàn)閃EIGHT不影響CONTAINS查詢的結(jié)果,只會(huì)影響CONTAINSTABLE查詢中的排序:
--在CONTAINS搜索中,權(quán)重并不影響排序
SELECT * FROM Article
WHERE CONTAINS(ArticleContent,'ISABOUT ("北京" weight(0.9),"上海" weight(0.6),"廣州" weight(0.5))')4.鄰近詞搜索的方式
- 可以搜索與另一個(gè)詞或短語(yǔ)相鄰近的詞或短語(yǔ):
--搜索文章內(nèi)容中第二個(gè)詞在第一個(gè)詞附近的記錄 SELECT * FROM Article WHERE CONTAINS(ArticleContent,'"張三" NEAR "李四"')
FREETEXT搜索方式
FREETEXT搜索方式與CONTAINS搜索方式相比,其搜索結(jié)果表現(xiàn)都十分不精確,因?yàn)镕REETEXT的搜索方式是將一個(gè)句子中的每個(gè)單字拆分開進(jìn)行搜索的。使用CONTAINS搜索方式搜索條件為“教育部”的記錄,那么搜索出來(lái)的將是記錄里包含“教育部”三個(gè)字符串的記錄。
--搜索文章內(nèi)容中包含'程'字和'社'字的記錄 SELECT * FROM Article WHERE FREETEXT(ArticleContent,'程社')
CONTAINSTABLE搜索方式
1、CONTAINSTABLE基本搜索:
--CONTAINSTABLE搜索文章內(nèi)容中含有友誼的記錄 SELECT * FROM CONTAINSTABLE(Article,ArticleContent,'友誼') as table1
留意到返回中指包含了兩個(gè)字段:

其實(shí)就是CONTAINSTABLE表中的數(shù)據(jù)。
2、CONTAINSTABLE返回所需列:
--CONTAINSTABLE搜索返回所需列 SELECT * FROM Article JOIN CONTAINSTABLE(Article,ArticleContent,'"環(huán)境"',2) as table1 ON Article.ArticleContent = table1.[KEY] ORDER BY table1.RANK DESC

3、CONSTAINSTABLE按符合條件排序
--按符合條件排序
SELECT * FROM Article JOIN
CONTAINSTABLE(Article,ArticleContent,' "泰國(guó)" NEAR "高鐵" ',10) as table1
ON Article.ArticleContent = table1.[KEY]
ORDER BY table1.RANK DESC看到查詢結(jié)果的確按符合條件進(jìn)行了排序:

4、CONSTAINSTABLE按按權(quán)值排序
--權(quán)重值排序
SELECT * FROM Article JOIN
CONTAINSTABLE(Article,ArticleContent,
'ISABOUT ("泰國(guó)" weight(0.9),
"高鐵" weight(0.6),
"環(huán)境" weight(0.1))') AS TABLE1
ON Article.ArticleContent = TABLE1.[KEY]
ORDER BY TABLE1.RANK DESC結(jié)果按照權(quán)重值排序:

使用FREETEXTTABLE搜索
單個(gè)字搜索,但是多了參數(shù)可供使用:語(yǔ)法如下:
FREETEXTTABLE (table , { column_name | (column_list) | * }
, 'freetext_string'
[ ,LANGUAGE language_term ]
[ ,top_n_by_rank ] )示例:

搜索image字段
在SQL Server 2005的image類型的字段里,不僅僅是可以存儲(chǔ)圖形文件,還可以存儲(chǔ)如可執(zhí)行文件、音樂(lè)文件、文本文件等眾多文件類型。SQL Server 2005支持對(duì)存儲(chǔ)在image類型的字段里的一些文件的內(nèi)容進(jìn)行全文搜索,但在創(chuàng)建全文索引時(shí)必須指明存儲(chǔ)在image字段里的文件的類型。
SQL Server 2005支持對(duì)存儲(chǔ)在image中的純文本文件、網(wǎng)頁(yè)文件、Word文件、Excel文件和PowerPoint文件的內(nèi)容進(jìn)行查詢,其擴(kuò)展名字段必須分別為txt、htm、doc、xls和ppt。全文索引創(chuàng)建完畢后,對(duì)image字段里的文件內(nèi)容進(jìn)行查詢的方法與其他字段的查詢方法是一樣的:
SELECT 編號(hào),標(biāo)題,文件,擴(kuò)展名 FROM 文章 WHERE CONTAINS(文件,'數(shù)據(jù)庫(kù)')
三、小結(jié)與評(píng)價(jià)
下面給出這個(gè)SQL Server全文搜索的常用SQL語(yǔ)句:
--開啟數(shù)據(jù)庫(kù)的全文搜索功能: EXEC sp_fulltext_database 'enable'; --數(shù)據(jù)庫(kù)啟用全文索引 --關(guān)閉數(shù)據(jù)庫(kù)的全文搜索功能: EXEC sp_fulltext_database 'disable'; --數(shù)據(jù)庫(kù)禁用全文索引 --如果你忘記了全文索引的目錄、表、列創(chuàng)建過(guò)全文索引 EXEC sp_help_fulltext_catalogs --全文索引目錄 EXEC sp_help_fulltext_columns --全文索引列 EXEC sp_help_fulltext_tables --全文索引表
到此這篇關(guān)于SQL Server全文搜索的文章就介紹到這了。希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
SQL中使用CONVERT函數(shù)轉(zhuǎn)換數(shù)據(jù)類型的簡(jiǎn)單實(shí)現(xiàn)方法
CONVERT函數(shù)是SQL中用于數(shù)據(jù)類型轉(zhuǎn)換的工具,允許將一個(gè)數(shù)據(jù)類型轉(zhuǎn)換為另一個(gè),如字符串轉(zhuǎn)數(shù)字或日期轉(zhuǎn)字符串,該函數(shù)的基本語(yǔ)法包括目標(biāo)數(shù)據(jù)類型、要轉(zhuǎn)換的表達(dá)式和可選的格式參數(shù),需要的朋友可以參考下2024-09-09
在SQL Server 2005中創(chuàng)建CLR存儲(chǔ)過(guò)程的詳細(xì)介紹
本篇文章是對(duì)在SQL Server 2005中創(chuàng)建CLR存儲(chǔ)過(guò)程進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06
SQL Server實(shí)現(xiàn)查詢每個(gè)分組的前N條記錄
這篇文章介紹了SQL Server實(shí)現(xiàn)查詢每個(gè)分組的前N條記錄,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-06-06
SQL?Server使用表值參數(shù)的實(shí)現(xiàn)示例
表值參數(shù)提供了一種將多行數(shù)據(jù)作為參數(shù)傳遞給存儲(chǔ)過(guò)程或函數(shù)的方法,本文主要介紹了SQL?Server使用表值參數(shù)的實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣的可以了解一下2024-08-08
sqlserver中去除字符串中連續(xù)的分隔符的sql語(yǔ)句
sqlserver中去除字符串中連續(xù)的分隔符的sql語(yǔ)句,需要的朋友可以參考下2012-05-05
每個(gè)分類取最新的幾條的SQL實(shí)現(xiàn)代碼
每個(gè)分類取最新的幾條的SQL實(shí)現(xiàn)代碼,需要的朋友可以參考下2012-08-08
SqlServer實(shí)現(xiàn)類似Oracle的before觸發(fā)器示例
本節(jié)主要介紹了SqlServer如何實(shí)現(xiàn)類似Oracle的before觸發(fā)器,需要的朋友可以參考下2014-08-08
SqlServer Mysql數(shù)據(jù)庫(kù)修改自增列的值及相應(yīng)問(wèn)題的解決方案
這篇文章主要介紹了SqlServer Mysql數(shù)據(jù)庫(kù)修改自增列的值及相應(yīng)問(wèn)題的解決方案的相關(guān)資料,需要的朋友可以參考下2016-01-01
Sql學(xué)習(xí)第三天——SQL 關(guān)于with ties介紹
with ties一般是和Top , order by相結(jié)合使用的,會(huì)查詢出最后一條數(shù)據(jù)額外的返回值,接下來(lái)將為大家詳細(xì)介紹下,感興趣的各位可以參考下哈2013-03-03

