在这里发布一个关于如何提高我的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