我對PostgreSQL,全文搜索和Trigram的整個概念有點困惑。在我的全文檢索查詢,我使用tsvectors,就像這樣:PostgreSQL全文搜索和Trigram混淆
SELECT * FROM articles
WHERE search_vector @@ plainto_tsquery('english', 'cat, bat, rat');
的問題是,這種方法沒有考慮拼寫錯誤。然後我開始閱讀大約Trigram and pg_trgm
:
通過其他例子,看起來像trigram被使用或使用向量,但從來都沒有。所以我的問題是:他們曾經一起使用過嗎?如果是這樣,怎麼樣? trigram替換全文嗎? trigrams更準確嗎?關於績效的卦怎麼樣?
我已經添加了幾個例子強調'%'和'之間的差別一些常用拼錯的詞/短語@@'來自每個分機。如果您的目標是找到包含英語的文檔(或任何已知的有您的字典的語言),那麼您就是在全文後。如果您的目標是將整個字段與整個字段的字符串進行匹配,並輸入一些重要的拼寫錯誤,那麼pg_trgm就是您想要的。 – 2013-04-08 18:16:28
感謝您的解釋!這清理了很多。好吧,看起來問題可以通過擴展字典的知識來解決。 – 2013-04-08 18:18:44
+1好,清楚的答案。 – 2013-04-08 18:52:12