【问题标题】:How to combine full_text_search with unaccent using Sequel gem?如何使用 Sequel gem 将 full_text_search 与 unaccent 结合起来?
【发布时间】:2018-08-06 23:28:03
【问题描述】:
我如何使用方法Sequel.full_text_search 结合PostgreSQL 中可用的函数unaccent 来返回匹配搜索词的记录,而不考虑带重音的字符?
例如:
# Given a user with first_name: Nícolas
User.full_text_search(:first_name, "nicolas").count
# Expected result to be 1, but it is 0
【问题讨论】:
标签:
ruby
postgresql
full-text-search
sequel
【解决方案1】:
我们可以通过使用Sequel::SQL::Function类来达到预期的效果:
# Given a user with first_name: Nícolas
col = Sequel.qualify(:users, :first_name)
col_without_accent = Sequel::SQL::Function.new(:UNACCENT, col)
Person.full_text_search(col_without_accent, "nicolas").count
# => 1
我们也可以将相同的unaccent 函数应用于匹配结果的术语:
Person.full_text_search(col_without_accent, Sequel::SQL::Function.new(:UNACCENT, "nícolas")).count