使用全文搜尋

2021-06-21 19:06:22 字數 4353 閱讀 7323

contains搜尋方式

1.簡單詞搜尋 - 搜尋乙個或多個特定的詞或短語。詞可以包括乙個或多個字元,中間沒有空格或標點。短語可以由空格分隔的多個詞組成,但詞之間可以有標點也可以沒標點:

--

搜尋文章內容含有張三或者李四的記錄

select

*from article where

contains(articlecontent,'

"張三" or "李四"

')

2.字首詞搜尋的方式 - 搜尋指定文字開頭的詞或短語,字首詞的搜尋方式主要是用在搜尋英文中,例如搜尋以「do」開頭的單詞,則可以將doctor、document、download等單詞都搜尋出來。

--

搜尋文章內容中含有以'認'開始的詞的記錄

select

*from article where

contains(articlecontent,'

"認*"

') --

認為,認識

3.加權詞搜尋的方式 - 給多個搜尋條件加上權值,加權值越高的記錄排在越前面,當以多個字串作為搜尋條件搜尋記錄時,可以為不同的字串加上乙個加權值,這個加權值是介於0和1之間的數值,加權值越高的記錄排在越前面。事實上在該select語句的返回結果集裡,並沒有按加權值的大小來排序,因為weight不影響contains查詢的結果,只會影響containstable查詢中的排序:

--

在contains搜尋中,權重並不影響排序

select

*from

article

where

contains(articlecontent,'

isabout ("北京" weight(0.9),"上海" weight(0.6),"廣州" weight(0.5))

')

4.鄰近詞搜尋的方式 - 可以搜尋與另乙個詞或短語相鄰近的詞或短語:

--

select

*from article where

contains(articlecontent,'

"張三" near "李四"

')

freetext搜尋方式freetext搜尋方式與contains搜尋方式相比,其搜尋結果表現都十分不精確,因為freetext的搜尋方式是將乙個句子中的每個單字拆分開進行搜尋的。使用contains搜尋方式搜尋條件為「教育部」的記錄,那麼搜尋出來的將是記錄裡包含「教育部」三個字串的記錄。

--

搜尋文章內容中包含'程'字和'社'字的記錄

select

*from article where

freetext(articlecontent,'

程社')

containstable搜尋方式1、containstable基本搜尋:

--

containstable搜尋文章內容中含有友誼的記錄

select

*from

containstable(article,articlecontent,'

友誼') as table1

留意到返回中指包含了兩個字段:

其實就是containstable表中的資料。

2、containstable返回所需列:

--

containstable搜尋返回所需列

select

*from article join

containstable(article,articlecontent,'

"環境"

3、constainstable按符合條件排序

--按符合條件排序

select

*from article join

containstable(article,articlecontent,'

"泰國" near "高鐵"

',10) as

table1

on article.articlecontent = table1.[

key]

order

by table1.rank desc

看到查詢結果的確按符合條件進行了排序:

4、constainstable按按權值排序

--

權重值排序

select

*from article join

containstable

(article,articlecontent,  '

isabout ("泰國" weight(0.9),

"高鐵" weight(0.6),

"環境" weight(0.1))

') as

table1

on article.articlecontent = table1.[

key]

order

by table1.rank desc

結果按照權重值排序:

使用freetexttable搜尋

單個字搜尋,但是多了引數可供使用:語法如下:

freetexttable (table , 

, 'freetext_string'[

,language language_term ][

,top_n_by_rank

] )

示例:

搜尋image欄位

在sql server 2005的image型別的字段裡,不僅僅是可以儲存圖形檔案,還可以儲存如可執行檔案、**檔案、文字檔案等眾多檔案型別。sql server 2005支援對儲存在image型別的字段裡的一些檔案的內容進行全文搜尋,但在建立全文索引時必須指明儲存在image欄位裡的檔案的型別。

sql server 2005支援對儲存在image中的純文字檔案、網頁檔案、word檔案、excel檔案和powerpoint檔案的內容進行查詢,其擴充套件名字段必須分別為txt、htm、doc、xls和ppt。全文索引建立完畢後,對image欄位裡的檔案內容進行查詢的方法與其他欄位的查詢方法是一樣的:

select 編號,標題,檔案,副檔名 from

文章 where

contains(檔案,'

資料庫')

select * from [content] t1 join

containstable([content], * , '(aa~ bb~ aa) or (aa~ bb) or (aa~ cc) or (bb ~ aa)  or  isabout (aa weight(0.08),  bb weight(0.06), cc weight(0.03), ee weight(0.01))' ) as t2

on t1.id = t2.[key]

order by t2.rank desc

create fulltext catalog [searcharticle] with accent_sensitivity = on

--建立全文索引

create fulltext index on article( [title], [content])

key index [pk__article__3213e83f1523e1f2] on [searcharticle]    --indexcontent是唯一索引名

MySQL使用全文本搜尋

1.理解全文本搜尋 mysql資料庫支援幾種基本的資料庫引擎中,並不是所有的引擎都支援本文所描述的全文本搜尋。在兩種最常用的引擎myisam和innodb中,只有前者支援全文本搜尋,而後者不支援。所以如果需要對錶進行全文本搜尋,則需要把該錶的引擎設定為myisam。全文本搜尋有比like匹配和正規表...

Mongodb 全文搜尋

全文索引的建立比較慢,實操中需要等伺服器閒時或者離線進行 否則會阻塞讀寫,當然也可以放在後台執行 新增全文索引 db tesla ensureindex 給 song lyrics 字段新增全文索引。權重分配,lycris 的權重為2,song 的權重為1.權重越大優先順序越高,權重的區間為1 10...

全文模糊搜尋

1.對原文進行分詞,再通過相應的搜尋演算法進行查詢 主要是中文分詞,這裡推薦 2.資料庫方式,通過全文索引進行搜尋 建立全文索引的表的儲存引擎型別必須為myisam 問題是match against對中文模糊搜尋支援不是太好 新建乙個utf8 myisam型別的表並建立乙個全文索引 create t...