csc*_*sch 6 ruby-on-rails rails-postgresql pg-search
我用来pg_search搜索产品:
class Product
include PgSearch
pg_search_scope(
:search_for,
against: %i(sku),
associated_against: { translations: [:name, :description] },
using: { tsearch: { prefix: true } }
)
end
Run Code Online (Sandbox Code Playgroud)
到目前为止效果很好。但我想添加搜索部分关键字的选项,以便客户可以通过输入“45678”找到具有 sku“123456789”的产品。这很容易做到LIKE,但找不到将其与 结合起来的方法pg_search,因此将结果组合并一起排名。
如何pg_search通过部分字符串查找产品?
PostGres 的pg_trgmword_similarity扩展将允许您在属性设置为的字符串内进行模糊搜索true。
rails g migration AddPgTrgmExtensionToDB
Run Code Online (Sandbox Code Playgroud)
class AddPgTrgmExtensionToDb < ActiveRecord::Migration[7.0]
def change
enable_extension 'pg_trgm'
end
end
Run Code Online (Sandbox Code Playgroud)
pg_search_scope :search_for, against: :sku, using: { trigram: { word_similarity: true } }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1025 次 |
| 最近记录: |