pg_search gem和全文搜索排名设置

Pio*_*ioz 5 postgresql full-text-search ruby-on-rails pg-search

我使用gem pg_search在我的postgres db上执行全文搜索.我的范围是这样的:

pg_search_scope :fulltext, against: [:firstname, :lastname, :middlename],
                using: {
                  tsearch: { prefix: true },
                    trigram: {
                      :threshold => 0.2
                    }
                  }
Run Code Online (Sandbox Code Playgroud)

当我用字符串搜索GRO我想那场比赛完全相同字的记录GRO有秩比相匹配的话,像记录高(包含GRO).

任何想法,如果有一些设置来做到这一点?

Pao*_*rre 6

我在 Django 中遇到了非常相似的情况,我解决了总结三元组相似度和 tsearch 排名的问题。

完全匹配的单词的相似度高于部分匹配,您可以在 PostgresSQL 上检查:

SELECT similarity('gro', 'gro') AS exact, similarity('gro', 'group') AS partial;
 exact | partial  
-------+----------
     1 | 0.428571
Run Code Online (Sandbox Code Playgroud)

我不是红宝石专家,但我已经阅读了pg_search文档,我认为您问题的解决方案应该与此类似:

pg_search_scope :fulltext,
                against: [:firstname, :lastname, :middlename],
                using: {
                  tsearch: { prefix: true },
                  trigram: {
                      :threshold => 0.2
                  }
                },
                :ranked_by => ":tsearch + :trigram"
Run Code Online (Sandbox Code Playgroud)