Authored by Gino Zhang

update 有货搜索智能提示设计与实现

1 # 原始需要说明 1 # 原始需要说明
2 2
3 ## 搜索结果太少 3 ## 搜索结果太少
4 -判断搜索结果小于10条,搜索词有推荐词的情况下。顶部显示搜索词的推荐词 ,最多显示5个。 4 +判断搜索结果小于20条,搜索词有推荐词的情况下。顶部显示搜索词的推荐词 ,最多显示3个。
5 5
6 ![搜索结果太少](http://redmine.yoho.cn/system/rich/rich_files/rich_files/000/003/621/original/%E6%90%9C%E7%B4%A2%EF%BC%8D%E7%BB%93%E6%9E%9C%E5%A4%AA%E5%B0%91.png) 6 ![搜索结果太少](http://redmine.yoho.cn/system/rich/rich_files/rich_files/000/003/621/original/%E6%90%9C%E7%B4%A2%EF%BC%8D%E7%BB%93%E6%9E%9C%E5%A4%AA%E5%B0%91.png)
7 7
8 ## 搜索无结果 8 ## 搜索无结果
9 9
10 -判断无搜索结果,搜索词有推荐词的情况下。考虑把搜索结果多的或第一个分词设为主推荐词,商品列表页显示推荐词的搜索结果。这个场景下不考虑搜索结果少于20个的处理。商品列表顶部显示主推荐词以外的其他推荐词,最多显示5个,排序不限。推荐用户选择,点击推荐词跳转到该分词的搜索结果页。 10 +判断无搜索结果,搜索词有推荐词的情况下。考虑把搜索结果多的或第一个分词设为主推荐词,商品列表页显示推荐词的搜索结果。这个场景下不考虑搜索结果少于20个的处理。商品列表顶部显示主推荐词以外的其他推荐词,最多显示3个,排序不限。推荐用户选择,点击推荐词跳转到该分词的搜索结果页。
11 11
12 ![搜索无结果](http://redmine.yoho.cn/system/rich/rich_files/rich_files/000/003/623/original/%E6%90%9C%E7%B4%A2%EF%BC%8D%E6%97%A0%E7%BB%93%E6%9E%9C.png) 12 ![搜索无结果](http://redmine.yoho.cn/system/rich/rich_files/rich_files/000/003/623/original/%E6%90%9C%E7%B4%A2%EF%BC%8D%E6%97%A0%E7%BB%93%E6%9E%9C.png)
13 13
14 # 搜索实现解析 14 # 搜索实现解析
15 15
16 -对于搜索来说,核心是在搜索无结果或结果太少时返回可以搜索出结果的推荐词。对于搜索无结果或者结果太少主要有两种可能:搜索输入条件太多,比如【Vans Stussy 卫衣 鞋子】,没有匹配所有关键词的商品;另外一种可能是用户搜索的关键词有货没有相关的商品,比如【迪奥】。 16 +对于搜索来说,核心是在搜索无结果或结果太少时返回可以搜索出结果的提示词。 对于搜索无结果或者结果太少主要有三种可能:
  17 +- 搜索输入条件太多,比如【Vans Stussy 卫衣 鞋子】,没有匹配所有关键词的商品;
  18 +- 还有一种就是本站有少量商品或过滤后商品数据不多,导致需要推荐提示词,比如【科比】;
  19 +- 另外一种可能是用户搜索的关键词有货没有相关的商品,比如【迪奥】;
17 20
18 -下面针对以上种场景分别讨论推荐方案。 21 +下面针对以上种场景分别讨论推荐方案。
19 22
20 ## 搜索输入条件太多的情况 23 ## 搜索输入条件太多的情况
21 24
@@ -23,6 +26,9 @@ @@ -23,6 +26,9 @@
23 26
24 比如对于【Vans Stussy 卫衣 鞋子】,拆分为四个关键词,然后到suggest索引中匹配。这样处理有两个好处:一个是推荐词的数量很容易得到;另外一个是可以获得“品牌 + 品类”这样的组合推荐词。 当然也有一个问题就是依赖于suggest索引的数据,一些好的推荐词可能不一定包含,这个后续需要考虑优化。 27 比如对于【Vans Stussy 卫衣 鞋子】,拆分为四个关键词,然后到suggest索引中匹配。这样处理有两个好处:一个是推荐词的数量很容易得到;另外一个是可以获得“品牌 + 品类”这样的组合推荐词。 当然也有一个问题就是依赖于suggest索引的数据,一些好的推荐词可能不一定包含,这个后续需要考虑优化。
25 28
  29 +## 搜索结果太少的情况
  30 +
  31 +对于这种情况的思路就是根据已经匹配到的商品,聚合出品牌、品类、风格等提示词返回。
26 32
27 ## 搜索输入为本网不存在的关键词 33 ## 搜索输入为本网不存在的关键词
28 34
@@ -99,4 +105,4 @@ @@ -99,4 +105,4 @@
99 # 后续计划 105 # 后续计划
100 1. 目前suggest和conversion是两个索引,在获取推荐词的时候可能需要调用两次ES查询,后续考虑合并以及基于suggest获取数量; 106 1. 目前suggest和conversion是两个索引,在获取推荐词的时候可能需要调用两次ES查询,后续考虑合并以及基于suggest获取数量;
101 2. 目前的爬虫调用了大量的Elasticsearch分词,后续考虑在进程内实现分词,减少网络开销; 107 2. 目前的爬虫调用了大量的Elasticsearch分词,后续考虑在进程内实现分词,减少网络开销;
102 -3. 目前爬虫的是百度百科的内容,可能部分内容不一定有,可以考虑通过下载维基百科语料或者调用百度搜索来获取更多内容来进行关键词提取。 108 +3. 目前爬虫的是百度百科的内容,可能部分内容不一定有,可以考虑通过调用百度搜索或爬取淘宝的数据来获取更多内容来进行关键词提取。