【问题标题】:Make postgres full text search (tsvector) act like ILIKE to search inside words?让 postgres 全文搜索(tsvector)像 ILIKE 一样搜索单词?
【发布时间】:2015-02-11 04:22:33
【问题描述】:

假设我搜索“Blerg”。我有一个名为SomethingblergSomething的项目。

如果我像这样在 postgres(和 rails)中进行 ILIKE 搜索:

where("name ILIKE ?", "%#{ 'Blerg' }%")

它将返回结果“SomethingBlergSomething”,因为它包含 Blerg。

有没有办法让更快的 tsvector 在一个单词中进行类似的搜索:

where("(to_tsvector('english', name) @@ to_tsquery(?))", ('Blerg' + ':*'))

上述查询不会返回“SomethingBlergSomething”。

那么如何让 tsvector 在单词内部搜索时表现得像 ILIKE。

【问题讨论】:

    标签: ruby-on-rails postgresql search full-text-search tsvector


    【解决方案1】:

    您知道由附加模块pg_trgm 提供的三元组搜索吗?这似乎比文本搜索更适合您的用例。

    有了 trigram 索引(GIN 或 GiST),您可以使用您原来的 ILIKE 谓词并获得它的索引支持。为此,您需要 Postgres 9.1+。

    详情:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多