在這裏發佈一個關於如何提高我的SQL搜索方法的速度的問題之後,我被建議更新我的表以利用全文搜索。這就是我現在所做的,使用Gist索引來加快搜索速度。在一些「簡單」的查詢中,我注意到了一個顯着的增加,我很高興。PostgreSQL:全文搜索 - 如何搜索部分單詞?
但是,我很難搜索部分單詞。例如,我有幾個包含Squire(454)的記錄,而且我有幾個包含Squirrel(173)的記錄。現在,如果我搜索Squire,它只會返回454條記錄,但我也希望它可以返回Squirrel記錄。
我的查詢看起來像這樣
SELECT title
FROM movies
WHERE vectors @@ to_tsoquery('squire');
我想我能做到to_tsquery('squire%')
,但不起作用。
如何獲得它以搜索部分匹配?
此外,在我的數據庫中,我有記錄是電影和其他只是電視節目。這些名稱與名稱不同,因此「明斯特」是電視節目,而明斯特是該節目的電影。我想要做的就是隻搜索電視節目和電影。有關我如何實現這一點的任何想法?
問候 Anthoni
如果你有'squire'這個搜索鍵,但是想得到'squirrel'的結果,你可能需要指定其他的約束條件。因爲否則的話,人們可能會說他們有搜索鍵「媽媽」,但想要結果「兔子」。所以也許你可能想要分割你的搜索鍵並把'squire'變成'|' sq | squ | squi | squir |鄉紳......這個或更有趣的算法會讓你成爲'松鼠'。我認爲@Joshua Burns的答案包含比我更通用的解決方案,但如果你想要通用。 – 2015-09-17 08:12:46