溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

SQL?Server的全文搜索功能怎么用

發(fā)布時(shí)間:2022-05-21 11:34:46 來源:億速云 閱讀:324 作者:iii 欄目:開發(fā)技術(shù)

本文小編為大家詳細(xì)介紹“SQL Server的全文搜索功能怎么用”,內(nèi)容詳細(xì),步驟清晰,細(xì)節(jié)處理妥當(dāng),希望這篇“SQL Server的全文搜索功能怎么用”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學(xué)習(xí)新知識吧。

    一、使用SQL Server全文搜索配置

    要使用SQL Server的全文搜索服務(wù),需要進(jìn)行如下配置。

    1、開啟全文搜索服務(wù):

    SQL?Server的全文搜索功能怎么用

    2、開啟數(shù)據(jù)庫的全文索引功能:

    --開啟數(shù)據(jù)庫的全文搜索功能
    EXEC sp_fulltext_database 'enable';

    3、創(chuàng)建全文索引目錄:

    --創(chuàng)建全文索引目錄
    CREATE FULLTEXT CATALOG IndexCatalog
         ON FILEGROUP [PRIMARY]
         IN PATH 'E:\SQLServerIndex'
         AS DEFAULT

    4、創(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.簡單詞搜索

    - 搜索一個(gè)或多個(gè)特定的詞或短語。詞可以包括一個(gè)或多個(gè)字符,中間沒有空格或標(biāo)點(diǎn)。短語可以由空格分隔的多個(gè)詞組成,但詞之間可以有標(biāo)點(diǎn)也可以沒標(biāo)點(diǎn):

    --搜索文章內(nèi)容含有張三或者李四的記錄
      SELECT * FROM Article WHERE CONTAINS(ArticleContent,'"張三" OR "李四"')
    2.前綴詞搜索的方式

    - 搜索指定文本開頭的詞或短語,前綴詞的搜索方式主要是用在搜索英文中,例如搜索以“do”開頭的單詞,則可以將doctor、document、download等單詞都搜索出來。

    --搜索文章內(nèi)容中含有以'認(rèn)'開始的詞的記錄
      SELECT * FROM Article WHERE CONTAINS(ArticleContent,'"認(rèn)*"')    --認(rèn)為,認(rèn)識
    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語句的返回結(jié)果集里,并沒有按加權(quán)值的大小來排序,因?yàn)閃EIGHT不影響CONTAINS查詢的結(jié)果,只會影響CONTAINSTABLE查詢中的排序:

    --在CONTAINS搜索中,權(quán)重并不影響排序
      SELECT * FROM Article
      WHERE CONTAINS(ArticleContent,'ISABOUT ("北京" weight(0.9),"上海"  weight(0.6),"廣州"  weight(0.5))')
    4.鄰近詞搜索的方式

    - 可以搜索與另一個(gè)詞或短語相鄰近的詞或短語:

    --搜索文章內(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搜索方式搜索條件為“教育部”的記錄,那么搜索出來的將是記錄里包含“教育部”三個(gè)字符串的記錄。

    --搜索文章內(nèi)容中包含'程'字和'社'字的記錄
      SELECT * FROM Article WHERE FREETEXT(ArticleContent,'程社')

    CONTAINSTABLE搜索方式

    1、CONTAINSTABLE基本搜索:
    --CONTAINSTABLE搜索文章內(nèi)容中含有友誼的記錄
      SELECT * FROM CONTAINSTABLE(Article,ArticleContent,'友誼') as table1

    留意到返回中指包含了兩個(gè)字段:

    SQL?Server的全文搜索功能怎么用

    其實(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

    SQL?Server的全文搜索功能怎么用

    3、CONSTAINSTABLE按符合條件排序
    --按符合條件排序
      SELECT * FROM Article JOIN
          CONTAINSTABLE(Article,ArticleContent,' "泰國" NEAR "高鐵" ',10) as table1
          ON Article.ArticleContent = table1.[KEY]
       ORDER BY table1.RANK DESC

    看到查詢結(jié)果的確按符合條件進(jìn)行了排序:

    SQL?Server的全文搜索功能怎么用

    4、CONSTAINSTABLE按按權(quán)值排序
    --權(quán)重值排序
      SELECT * FROM Article JOIN
      CONTAINSTABLE(Article,ArticleContent,
      'ISABOUT ("泰國" 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)重值排序:

    SQL?Server的全文搜索功能怎么用

    使用FREETEXTTABLE搜索

    單個(gè)字搜索,但是多了參數(shù)可供使用:語法如下:

    FREETEXTTABLE (table , { column_name | (column_list) | * }
      , 'freetext_string'
      [ ,LANGUAGE language_term ]
      [ ,top_n_by_rank ] )

    示例:

    SQL?Server的全文搜索功能怎么用

    搜索image字段

    在SQL Server 2005的image類型的字段里,不僅僅是可以存儲圖形文件,還可以存儲如可執(zhí)行文件、音樂文件、文本文件等眾多文件類型。SQL Server 2005支持對存儲在image類型的字段里的一些文件的內(nèi)容進(jìn)行全文搜索,但在創(chuàng)建全文索引時(shí)必須指明存儲在image字段里的文件的類型。

    SQL Server 2005支持對存儲在image中的純文本文件、網(wǎng)頁文件、Word文件、Excel文件和PowerPoint文件的內(nèi)容進(jìn)行查詢,其擴(kuò)展名字段必須分別為txt、htm、doc、xls和ppt。全文索引創(chuàng)建完畢后,對image字段里的文件內(nèi)容進(jìn)行查詢的方法與其他字段的查詢方法是一樣的:

    SELECT 編號,標(biāo)題,文件,擴(kuò)展名 FROM 文章 WHERE CONTAINS(文件,'數(shù)據(jù)庫')

    三、小結(jié)與評價(jià)

    下面給出這個(gè)SQL Server全文搜索的常用SQL語句:

    --開啟數(shù)據(jù)庫的全文搜索功能:
    EXEC sp_fulltext_database 'enable'; --數(shù)據(jù)庫啟用全文索引
    --關(guān)閉數(shù)據(jù)庫的全文搜索功能:
    EXEC sp_fulltext_database 'disable'; --數(shù)據(jù)庫禁用全文索引
    
    
    --如果你忘記了全文索引的目錄、表、列創(chuàng)建過全文索引
    EXEC sp_help_fulltext_catalogs    --全文索引目錄
    EXEC sp_help_fulltext_columns    --全文索引列
    EXEC sp_help_fulltext_tables    --全文索引表

    讀到這里,這篇“SQL Server的全文搜索功能怎么用”文章已經(jīng)介紹完畢,想要掌握這篇文章的知識點(diǎn)還需要大家自己動(dòng)手實(shí)踐使用過才能領(lǐng)會,如果想了解更多相關(guān)內(nèi)容的文章,歡迎關(guān)注億速云行業(yè)資訊頻道。

    向AI問一下細(xì)節(jié)

    免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

    AI