全文索引的SQL查詢關鍵字

2021-07-06 06:16:34 字數 1855 閱讀 7294

搜尋單個詞和短語的精確或模糊的匹配項,要搜尋的內容必須是個有意義的詞語,比如說「蘋果」、「建設廳」,不能是一些沒意義的詞語,比如「阿迪撒啊是」,「兒兒的」這樣的詞語即使

like是能查詢出來,但全文索引對這樣沒意義的詞語可能沒有建立索引,查不出來

[sql] view plain

copy

1. select *   

2. from dbo.business  

3. where contains(address,'旅遊

')  

實現功能:查詢business表中address列包含「旅遊」的行

詳細檢視:

2. freetext

和contains類似,不同的是它會先把要查詢的詞語先進性分詞然後在查詢匹配項

[sql] view plain

copy

1. 01.select *    

2. 02.from dbo.business     

3. 03.where freetext(address,'帶嬰兒旅遊

')  

詳細檢視:

在 查詢方式上與 contains 幾乎一樣。但containstable 返回的是符合查詢條件的表,在 sql 語句中我們可以把它當作乙個普通的表來使用,並且使用 containstable 的查詢對每一行返回乙個相關性排名值 (rank) 和全文鍵 (key)。

[sql] view plain

copy

1. select  *  

2. from    business as ft_tbl  

3.         inner join containstable(business, *, 'isabout (嬰兒

weight (.8),

赤水weight (.4) )')  

4.         as key_tbl on ft_tbl.businessid = key_tbl.[key]  

5. order by key_tbl.rank desc  

isabout 是這種查詢的關鍵字,weight 指定了乙個介於 0~1之間的數,類似係數。表示不同條件有不同的側重。

containstable 返回的表包含有特殊的兩列:key,rank。

被全文索引的表必須有唯一索引。這個唯一的索引列在返回的表中就成為 key。我們通常把它作為表連線的條件。

在某些**搜尋時,結果中會出現表示匹配程度的數字,rank 與此類似。它的值在0~1000之間,標識每一行與查詢條件的匹配程度,程度越高,rank 的值大,通常情況下,按照 rank 的降序排列。

詳細檢視:

在 查詢方式上與 freetext 幾乎一樣。但 freetexttable 返回的是符合查詢條件的表,在 sql 語句中我們可以把它當作乙個普通的表來使用,並且使用  freetext  的查詢對每一行返回乙個相關性排名值 (rank) 和全文鍵 (key)。

[sql] view plain

copy

1. select  * ,  

2.         businessid ,  

3.         address  

4. from    business as ft_tbl  

5.         inner join freetexttable(business, address, 'isabout (帶嬰兒旅遊

weight (.8),

赤水weight (.4) )')  

6.         as key_tbl on ft_tbl.businessid = key_tbl.[key]  

7. order by key_tbl.rank desc  

詳細檢視:

SQL 全文索引

在資料庫中快速搜尋資料,使用索引可以提高搜尋速度,然而索引一般是建立在數字型或長度比較短的文字型字段上的,比如說編號 姓名等字段,如果建立在長度比較長的文字型字段上,更新索引將會花銷很多的時間。如在文章內容欄位裡用lik e 語句搜尋乙個關鍵字,當資料表裡的內容很多時,這個時間可能會讓人難以忍受。在...

建立SQL全文索引

1.開啟全文索引和建立全文索引目錄 exec sp fulltext database enable exec sp fulltext catalog gf ft drop exec sp fulltext catalog gf ft create 為news表建立全文索引 可索引列為 title,...

mySql全文索引查詢

使用全文索引首先需要資料的搜尋引擎是myisam,innodb不支援全文索引 1.把你要查詢的字段設定全文索引 alter table sn ly peopleinfo add fulltext tel phone 2.執行sql語句 select from sn ly peopleinfo whe...