You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从表行自由文本中提取标准化产品名称 现有方案效率低求优化

优化实现方案

方案1:正则批量提取(产品词数量较少时首选)

你可以直接用正则表达式捕获所有预设的标准产品关键词,无需编写大量分支判断和子串截取逻辑,以PostgreSQL为例,示例代码如下:

-- 括号内写入所有你需要匹配的标准产品名,用|分隔
select 
  substring(product from 'books|bikes|sofa|desk|chair|table') as clean_product
from your_table;

该写法会自动返回文本中第一个匹配到的标准产品名,例如输入books per customer会直接返回books,新增品类仅需在正则列表中追加对应词汇即可。

方案2:映射表关联(产品词数量多、迭代频繁时首选)

如果标准产品词数量超过20个,维护长正则的成本较高,可以单独建一张标准产品映射表存储所有规范名称:

  1. 建表示例:
create table standard_products (
  standard_name varchar(50) primary key,
  priority int default 1 -- 可用于解决多词匹配冲突,数值越大优先级越高
);
-- 插入你需要的所有标准产品名
insert into standard_products(standard_name) values ('books'),('bikes'),('sofa'),('desk'),('chair'),('table');
  1. 关联查询实现标准化:
select distinct on (t.id) -- 去重,保留每个原记录的最高优先级匹配结果
  t.*,
  s.standard_name as clean_product
from your_table t
left join standard_products s 
  on t.product ilike '%' || s.standard_name || '%'
order by t.id, s.priority desc;

后续新增标准产品无需修改SQL,仅需往映射表插入新记录即可,维护成本极低。

关于to_tsvector/to_tsquery的适用性

这两个是PostgreSQL的全文检索工具,适合关键词搜索、相关性排序场景,你的需求是提取已知的固定标准产品名,常规场景下不需要用到。如果需要处理同义词/词干归一(比如couch映射为sofa、book和books统一为book),可以搭配to_tsvector做词干提取提升匹配准确率。


内容的提问来源于stack exchange,提问作者poppies

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 16:36:04