我们目前有一个列表搜索功能,使用的 es 实现搜索功能,但是无论怎么优化,始终跟竞品(携程、美团)比有差距
主要差距在一下纠错、联想、排序方面
case1 、比如输入:"gugong"、"gug"、"故宫"、"顾工"、"故", 均出现故宫(我们目前是单独存了一些搜索关键词字,比如故宫会存:gugong 、gg 、gug 、顾工等,但是效果明显不如竞品)
case2 、 分词问题,比如有一个饭店叫“烟台国际饭店”,那么这个名字在 es 里面的分词是“烟台、国际、饭店” 用户如果输入“烟台国”,用户输入的分词结果为“烟台、国”,这个时候虽然能够搜索出这个饭店,但是排序靠后,反而出现了一个“烟台大酒店”在前面。我猜测 es 只找到了“烟台”这个词去计算排序分,“国”和“国际”不相等,因此没有参与排序分计算
case3 、还是“烟台国际饭店”,如果用户完整的输入“烟台国际饭店”,这个时候召回结果第一条就是他,但是还会有很多其他类似的结果,比如“烟台大饭店”也在结果内,虽说结果也能接受,但是能否在完全精确命中的情况下把多余的结果去掉呢?(尝试过"operator"设置成"and",但是这样会导致某些情况下搜不到数据)
所以前来请教一下,现目前做搜索推荐,除了 es 是否还有更好的技术方案呢?包含纠错、拼音缩写这种常见的业务场景
如果仅仅是我们对 es 调教不到位,可否推荐一些进阶的 es 搜索优化资料?
感谢你看完以上问题,小弟无以为报,磕头感谢 [狗头]
主要差距在一下纠错、联想、排序方面
case1 、比如输入:"gugong"、"gug"、"故宫"、"顾工"、"故", 均出现故宫(我们目前是单独存了一些搜索关键词字,比如故宫会存:gugong 、gg 、gug 、顾工等,但是效果明显不如竞品)
case2 、 分词问题,比如有一个饭店叫“烟台国际饭店”,那么这个名字在 es 里面的分词是“烟台、国际、饭店” 用户如果输入“烟台国”,用户输入的分词结果为“烟台、国”,这个时候虽然能够搜索出这个饭店,但是排序靠后,反而出现了一个“烟台大酒店”在前面。我猜测 es 只找到了“烟台”这个词去计算排序分,“国”和“国际”不相等,因此没有参与排序分计算
case3 、还是“烟台国际饭店”,如果用户完整的输入“烟台国际饭店”,这个时候召回结果第一条就是他,但是还会有很多其他类似的结果,比如“烟台大饭店”也在结果内,虽说结果也能接受,但是能否在完全精确命中的情况下把多余的结果去掉呢?(尝试过"operator"设置成"and",但是这样会导致某些情况下搜不到数据)
所以前来请教一下,现目前做搜索推荐,除了 es 是否还有更好的技术方案呢?包含纠错、拼音缩写这种常见的业务场景
如果仅仅是我们对 es 调教不到位,可否推荐一些进阶的 es 搜索优化资料?
感谢你看完以上问题,小弟无以为报,磕头感谢 [狗头]