我有Product
模型,具有description
属性。
创建新产品时,我需要在其描述中查找具有相应引用的产品,并在它们之间创建Link
对象。
示例:
Product 1
Description: ".... 58274072 ... "
我需要查找描述中包含58274072
的所有产品:
similar_products = Product.where("description like ?", "%58274072%")
我有两个问题:
我该如何解决这些问题?
答案 0 :(得分:1)
要优化LIKE的索引,您应该使用trigam扩展名。
为此,您需要安装模块pg_trgm,它为GIN和GiST三元组索引提供运算符类,以支持所有LIKE和ILIKE模式:
示例索引:
{
if (mAuth.getCurrentUser()!=null){
final String user_id = mAuth.getCurrentUser().getUid();
if (mAuth.getCurrentUser().getUid().equals(user_id)) {
post_username2.setText(username);
}
}
或:
CREATE INDEX ON product USING gin (description gin_trgm_ops);
您需要在GIN或GiST之间进行选择... GIN查询速度更快,但创建速度较慢,更新速度较慢,且通常大于GiST。
如果它可以解决您的问题,请尝试此操作。
答案 1 :(得分:0)
我建议使用like
,product_id
创建包含reference
的表product_references,而不是使用Link
(此列可以编入索引)。一个产品可以有多个引用,因此它将具有多个product_references行。然后应该改变流程如下:
NumberDecimal("12.34")
对象作为业务规则解析,搜索,链接和创建新的product_reference的步骤可以由后台作业处理。