使用子串的PostgreSQL全文搜索

时间:2017-05-31 11:52:23

标签: sql postgresql full-text-search

我正在尝试创建一种在PostgreSQL(版本9.4)中通过多列搜索数百万(80+ mio)记录的最快方法。

我想尝试使用标准的PostgreSQL,而不是Solr等。

我目前正在测试全文搜索https://blog.lateral.io/2015/05/full-text-search-in-milliseconds-with-postgresql/

它有效,但我想要一些更灵活的搜索方式。

目前,如果我有一个包含ex的列。 “沃尔沃”和一个包含“蓝色”的我能够找到带有搜索字符串“volvo blue”的记录,但我还想找到使用“volvo blu”的记录,好像我使用了LIKE和“%blu%”

全文搜索可以吗?

1 个答案:

答案 0 :(得分:1)

这样的唯一选择是使用pg_trgm contrib模块。

这使您可以创建一个GIN或GiST索引,该索引为三个字符的所有序列编制索引,这些序列可用于使用相似性运算符%进行搜索。

两个注释:

  1. 使用%运算符可能会返回“误报”结果,因此请务必添加第二个条件(例如使用LIKE)来消除这些结果。

  2. 三元搜索适用于较长的搜索字符串,但由于存在许多误报结果,因此使用短搜索字符串表现不佳。

  3. 如果这对您的目的不够好,您将不得不诉诸第三方解决方案。