我有一个带有Product属性的description模型。在创建新产品时,我需要寻找在描述中具有相应引用的产品,并在它们之间创建一个Link对象。
示例:
Product 1
Description: ".... 58274072 ... "我需要查找描述中包含58274072的所有产品:
similar_products = Product.where("description like ?", "%58274072%")我有两个问题:
我怎样才能解决这些问题?
发布于 2018-02-06 14:59:20
要优化索引,您应该使用trigam扩展。
为此,您需要安装模块pg_trgm,它为GIN和GiST trigram索引提供操作符类,以支持所有类似和ILIKE模式:
示例索引:
CREATE INDEX ON product USING gin (description gin_trgm_ops);或者:
CREATE INDEX ON product USING gist (description gist_trgm_ops);你需要在杜松子酒和GiST之间做出选择.GIN查询速度更快,但创建速度更慢,更新速度更慢,而且通常比GiST更大。
如果它能解决你的问题,就试试这个吧。
发布于 2018-02-06 15:13:20
与使用like不同,我建议创建带有2列的表product_references:product_id、reference (可以对该列进行索引)。一个产品可以有多个引用,这样它就会有多个product_references行。然后,应将流更改如下:
Link对象作为业务规则解析、搜索、链接和创建新product_reference的步骤可以由后台作业处理。
https://stackoverflow.com/questions/48645563
复制相似问题