sunliwen / poco

Poco v1.6
0 stars 1 forks source link

[好药师] 搜索中全匹配的需求 #89

Closed jacobfan closed 5 years ago

jacobfan commented 10 years ago

苏骏强提出:

搜索现在需要增加一个“全匹配”的需求,条件包括商品名称、商品规格、生产厂家

如: 商品名称为“ABCED”,则输入的关键词必须为“ABCED”才可能匹配到。

1、 索引增加一个字段(goods_name),商品名称,string,作全匹配时用到。(此商品名称的字段与原来的item_name是不一样的,原来的是套餐名称)

2、搜索增加一个参数 fq(fullQuery),对商品名称(goods_name)、商品规格(item_spec)、生产厂家(factory) 三个field作全匹配,三个之间的匹配关系是“或”

jacobfan commented 10 years ago

@sunliwen @lisztli

aoeuidht commented 9 years ago

如果这个是某个页面的需求,而不是通用的检索(也就是检索框那个搜索),那为了这个小功能在es中增加一个字段、在检索api增加额外参数,有些得不偿失。

这种「全部匹配」的需求完全可以用mysql、mongodb 的查询功能来完成。只要加上对应的索引、cache,以 haoyaoshi 目前的用户量、查询次数,完全没有问题。

当然,实现是 haoyaoshi 做,还是我们做,可以继续商量。

sunliwen commented 9 years ago

@brook-peng 请peng兄具体回答一下。

brook-peng commented 9 years ago

这个涉及到几个场景 , 运营人员习惯使用货号(sku)进行检索,如 ABC123456,这样的话,是不需要分词,直接匹配货号字段,在前端我想直接使用正则来做一下测试,如果判断是货号,那直接就做一个匹配,而且我看了Mapping,sku实现上也是索引了的,尝试用Search_terms来匹配,但抛异常,这里Search_terms只允许用tags. 上面有兄弟说,可以用mysql或mongodb来实现,当然是可以的,但是,对于前端实现来讲,增加了复杂性,要根据关键词来判断是走哪个检索,而且返回的结果格式也不同,界面上的显示也要适配。而上面提到的需求,更多是希望能快速精确的命中,实现上,就是跳过分词,直接命中标签,是移动端需要

aoeuidht commented 9 years ago

@brook-peng 我晚上和jacob 商量下那个自定义字段的ticket,我们已经提交了,不过还没review 完成。