Wow4j Wow4j
首页
个人使用说明书
后端开发
前端开发
测试开发
运维开发
大数据开发
产品&UI交互
团队管理
软技能
他山之石
开源产品
敬请期待
GitHub (opens new window)
首页
个人使用说明书
后端开发
前端开发
测试开发
运维开发
大数据开发
产品&UI交互
团队管理
软技能
他山之石
开源产品
敬请期待
GitHub (opens new window)
  • 概要
  • 面试八股文

  • 服务端小技巧合集

  • Java基础

  • MySQL 相关

  • Redis 最佳实践指南

  • 文本搜索Elasticsearch

    • 垂直电商搜索注意点
      • 1. 搜索引擎分类
      • 2. 搜索优化的目标
      • 3. 搜索结果综合排序
      • 4. 搜索的关键词抽取
      • 5. 索引
      • 5. 技术难点
        • 1. 单字 较难解决的问题
        • 2. 停用词的问题
        • 3. 组合词问题
        • 4. 输入错词的问题
        • 5. 命名实体识别
        • 6. 用户意图识别
        • 6. 冷启动数据问题
      • 总结
    • 关于搜索建议词的分析以及相应的优化方案
    • ElasticSearch 临时
  • Kafka 最佳实践指南

  • 网络相关

  • 架构相关

  • 监控告警

  • 防爬风控

  • 稳定性 checklist

  • 效能工具

  • 后端开发
  • 文本搜索Elasticsearch
timchen525
2023-02-01

垂直电商搜索注意点

# 1. 搜索引擎分类

当前的搜索引擎的分类主要分为:

  1. 全网搜索引擎。比如:“百度”、“谷歌”对互联网的各种数据进行搜索。
  2. 垂直搜索引擎。垂直搜索引擎的数据限定于垂直领域,垂直领域是针对某一个行业或者细分领域的,这些垂直领域是全网搜索引擎的子集。典型的垂直搜索有“电商搜索”。
  3. 元搜索引擎。用户在输入搜索词之后,根据其他多个搜索引擎合理组织出新的数据,从而返回组织后的结果,元搜索引擎没有自己的爬虫。

# 2. 搜索优化的目标

关于搜索优化的目标,这里引用了电商系统中的使命:“多、快、好、省”:

  1. 多 搜出符合的商品更多
  2. 快 搜索接口的响应尽可能的快
  3. 好 搜出的商品符合用户的需求越靠前,让用户觉得好用
  4. 省 只搜出用户想要的商品

# 3. 搜索结果综合排序

搜索排序的依据:利用搜索词、文档质量、搜索行为日志反馈以及用户信息等方面对搜索结果的文档集合机型综合排序。

  1. 利用搜索词进行排序。 该过程有称为相关性排序,是根据用户的搜索词与文档本身的相关程度进行排序,整个过程只考虑文档与用户搜索词的匹配程度。

  2. 利用文档质量进行排序。 文档的质量是一个多方面的评价标准,它包括对文档链接权值、文档链接质量的分析,对文档内容真实性、文档内容权威等各方面等情况计算一个合理参考值,给与文档基于质量上的评分。

  3. 利用搜索行为日志反馈进行排序。 用户的搜索行为日志,包括:用户点击了某个商品、在某个商品上的停留时间、加购了某些商品,这些行为可以通过相关日志或者客户端埋点获取,结合搜索行为日志来对排序进行干预。

  4. 利用用户信息进行排序。 该过程又称为个性化排序,是根据用户搜索的历史记录、个性喜好、身份特征等方面为用户定制的搜索结果,即可能导致不同用户使用相同搜索词看到的搜索结果不一致。

说明:文档质量、行为日志反馈等在数据分析过程中已经完成(并不需要用户在搜索过程中进行文档质量评分),利用搜索词和用户信息的排序方式采用分布式实时计算。

换个角度看搜索排序,除对搜索结果排序结果有很高的要求之外,对排序完成的时间也具有很高的要求,在极短的时间内完成排序也是搜索体验的重要影响因素之一。

# 4. 搜索的关键词抽取

搜索的关键词抽取技术主要如下:

  1. 手动标注文档的额关键词。 keywords = "青年,可持续发展,发展"

  2. 手动标注文档的标签。 标签:政府债券 俄罗斯联邦 Anton

  3. 系统自动抽取。 常见的自动化抽取方法是利用TF-IDF算法。大致思想如果一个关键词在某网页中出现频率很高,在其他网页中很少出现,则认为它是该网页的关键词。

# 5. 索引

索引可以分为两类:

  1. 字索引
  2. 词索引

词索引又涉及到中文分词,中文分词分为以下两种:

  1. 基于词库分词(比如:ik分词、jieba分词)
  2. 基于机器学习的方式

利用机器学习的方式,采用基于上下文信息的分词技术,目前公认的机器学习方式能够达到的较好效果是基于条件随机场模型(Conditional Random Fields)的中文分词技术

# 5. 技术难点

# 1. 单字 较难解决的问题

存在问题:

  • 搜索“花”时,出现“花生”
  • 搜索“瓜”时,出现“瓜子”
  • 搜索“水”时,出现“水壶”
  • ......

常见的原子词有如下:

虾、葱、鱼、水、米、面、油、肉、鸡、姜、盐、梨、花、蟹、蒜、菇等等

解决方式: 将原子词放在原子表atomwords.txt中,保护原子词的filter,即维护各个原子词对应的类目code。 比如:我们的商品相关的索引中每个商品都会维护对应的类目code,因此,搜索单字的时候只要带上单字对应的code进行filter过滤掉不相关的商品。

# 2. 停用词的问题

在电商商品中经常出现如下词:

袋、g、L、片、/、支、盒

另外有以下几个词注意不能被用作停用词:

米、被

IK默认自带的停用词有(30个):

也、了、仍、从、以、使、则、却、又、及、对、就、并、很、或、把、是、的、着、给、而、被、让、在、还、
比、等、当、与、于、但

# 3. 组合词问题

在上面的索引的分类中,我们除了分出词索引,为什么还需要字索引,看下下面这个例子:

假如:现在词库中有词“大学生”、“活动”、“中心”,因此,当文档中包括“大学生互动中心”,根据词切分 为“大学生/活动/中心”。此时,如果我们用“大学”去搜索文本,将无法查找到该条记录 当加上字索引“大/学/生/活/动/中/心”,用户输入大学用如下语句“(大AND学)OR 大学”,即可把组合词的问题解决了(即查询的时候使用字词混合查询),当然做的更细一点,可以在匹配的时候加上约束,单字“大”必须在单字“学”前面。

# 4. 输入错词的问题

关于输入错词的问题,对应的业内有专门的技术文本纠错 对于搜索框搜索的词的纠错。

主要有以下两种情况:

  1. 拼音纠错。这种一般是针对拼音输入法的用户输入的错误的词进行纠正。比如:用户输入“皇上皇”,系统会自动纠为“煌上煌”
  2. 字形纠错。这种一般针对五笔或者手写的用户输入的错误词进行纠正。比如:用户输入“囗罩”,系统纠成正确的“口罩”等。

# 5. 命名实体识别

待补充

# 6. 用户意图识别

待补充

# 6. 冷启动数据问题

在搜索引擎系统中,通过用户行为日志或者用户信息来对搜索的商品权重进行加权,从而提升用户体验。 但是,对于新用户或者新开的城市门店来说,是没有这方面的数据。因此,这里提出了一种权重加权的方法:

最终权重 = 0.3 * 系统平均权重 + 0.7 * 用户行为权重

这种方式,在一开始用户行为权重值较小的时候,让系统的平均权重较大,从而避免了冷数据的问题。

# 总结

垂直电商搜索涉及的技术领域较多,其本质是自然语言处理的实际应用。

上次更新: 2023/03/22, 15:21:20
MySQL 调优手册
关于搜索建议词的分析以及相应的优化方案

← MySQL 调优手册 关于搜索建议词的分析以及相应的优化方案→

Theme by Vdoing | Copyright © 2022-2023 timchen525 | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式
×