postgresql 全文搜索

在項目中,遇到了一個存儲文本的字段, 頁面上展現的時候, 是一個查詢字段函數

以前用的 的是  ilike 這樣的查詢方法, 在數據量過100萬的時候, 查詢基本沒有效率.學習

例如    "   where  content ilike  '%more%';   測試

經過學習pg的手冊,   12 章節中的內容,spa

嘗試了以下2中方法:效率

SELECT 'a fat cat sat on a more and ate a fat rat' :: tsvector @@ 'more' :: tsquery;        這種返回的結果爲 t,  ①
SELECT to_tsvector('dfsjalfjsl more dflasjfl top') @@ plainto_tsquery(' more ');   這種返回的結果爲f,  ②搜索

特別注意如上的寫法,通過大量數據的測試下,  使用了① 方法,方法

若是要寫在 where 條件中, 數據

例如 :  wher content::tsvector@@'more'::tsquery    項目

說明 :  content 這個是你的文本存儲的字段,  大概意思就是, 將字段作一次數據上的處理,  tsvector 是那個作數據處理的函數,查詢

'more'  是你要搜索的關鍵詞,   這個沒啥好解釋的

 

使用的場景 :

1   ilike 比較適合模糊的匹配, 而本文提供的方法是一種比較精確的,  歡迎你們去測試

2   效率的問題,  ilike 在數據量大的狀況,   查詢速度不是通常慢,數據量過100萬的時候,  而本文提供的方法則速度很快,  

 

暫時尚未測試出有沒有其餘未知的隱患,  歡迎你們來信交流學習.

因爲沒有通過大量的測試,致使本文中以上的結論失效了, 

在實際的項目中,  我用了  where  to_tsvector(content)@@to_tsquery('more');   

content 爲要搜索 的表字段,  more 爲搜索的關鍵詞, 

相關文章
相關標籤/搜索