我正在使用
这个功能目前运作良好。但我想添加一个选项,可以搜索部分关键词,这样客户就可以通过输入“45678”来找到具有sku“123456789”的产品。使用
如何让
pg_search
进行产品搜索:class Product
include PgSearch
pg_search_scope(
:search_for,
against: %i(sku),
associated_against: { translations: [:name, :description] },
using: { tsearch: { prefix: true } }
)
end
这个功能目前运作良好。但我想添加一个选项,可以搜索部分关键词,这样客户就可以通过输入“45678”来找到具有sku“123456789”的产品。使用
LIKE
很容易实现,但是我找不到将其与pg_search
结合起来的方法,以便结果可以组合和排名。如何让
pg_search
通过部分字符串查找产品?
prefix: true
来实现此功能。你可以尝试使用trigram
而不是tsearch
,因为它会通过字母三元组进行搜索,而不是整个字符串。 - uno_ordinaryprefix:true
只会查找前缀,因此对于数字12345
,使用前缀为123
的搜索可以匹配成功,但使用前缀为234
的搜索则无法匹配成功。 - csch