前面介绍了OpenSearch的基本使用(使用OpenSearch为应用提供搜索功能),一个小型的搜索服务很容易搭建。但具体应用到某个业务时,可能我们对默认的搜索结果并不满意,这里介绍下OpenSearch在搜索结果的调优方面提供的方法。

调优入口

使用OpenSearch时,要影响搜索结果,可以在两个地方下功夫。

查询

一条OpenSearch查询语句可以包含多种形式的子句,除了最核心的必选query子句之外,其它可选的子句类型也可以从不同的维度影响搜索结果。子句类型有:query、config、sort、filter、distinct、kvpairs、aggregate几种。
1、在query子句中,通过()、AND、OR、对关键词进行组合,使用ANDNOT对关键词进行排除。使用RANK对关键词顺序进行调优。

//搜索“鼻炎”相关的文章,同时过滤掉“过敏性鼻炎”的文章,如果标题中包含鼻炎,则在搜索结果中排在前面。query=(default:'鼻炎' ANDNOT default:'过敏性鼻炎' ANDNOT title:'过敏性鼻炎')RANK title:'鼻炎'

2、在config子句中,通过设置rerank_size,控制参与精排的item数目来调整性能。
3、通过filter子句中设置过滤条件,影响搜索结果。
4、通过sort子句设置搜索结果的排序方式。
5、通过distinct对搜索结果进行聚合。
6、通过kvpairs向细排表达式传参,间接调整搜索结果。
7、aggregate子句用来设置搜索结果的统计信息。

关于子句更详细的介绍在这里:
https://help.aliyun.com/document_detail/29156.html

搜索结果相关性配置

鉴于搜索引擎面对的数据量很大,OpenSearch把搜索过程拆分为两步:粗排和细排。

粗排和细排的目标不同,需要处理的数据量不同,OpenSearch提供了不同的算法集。算法集中的算法有些在粗排和细排中都能使用,有些只能在细排中使用。我们在算法集中选择算法进行组合,来影响OpenSearch每一步的排序结果。

搜索相关性函数

上面提到了搜索优化的两个着手点:查询入口的查询语句,搜索结果相关性配置。这两个地方都可以调用OpenSearch提供的相关性函数,从相关性函数中获取到本次搜索的context信息,通过对context做出选择来影响搜索结果。

每个相关性函数的详细解释可以看这里:
https://help.aliyun.com/document_detail/29131.html

不同相关性函数可以应用的地方不一样。有的只能用于粗排,有的只能用于细排,有的可以用在查询语句中,有的几个地方都可以使用。

这里以对丁香医生的健康科普文章搜索为例,写几个相关性函数使用场景

//粗排中,使用bm25和文档新旧程度两个参数进行排序,权重为3:1。
static_bm25()*3+timeliness(time)
//细排中,只保留发布时间在1周以内的文章。
now()-time/1000>7*24*60

个性化搜索

通过kvpairs向搜索引擎传参,在细排中通过tag_match获取参数值,并根据值不同调整搜索结果不同因子的权重。

比如,要简单的实现丁香医生App中的个性化推荐功能。
1、为所有文章赋一个tag属性,如,母婴(1)、营养(2)、慢性病(3)、两性(4)等。
2、记录用户所有浏览过的文章,积累一段时间的数据之后,对用户点过的文章的tag属性进行统计,作为用户的兴趣点,记录在用户的user信息中。如,母婴(1):0.5,营养(2):0.4,其它:0.1。
3、当用户使用丁香医生的搜索“感冒”时,在query中附加上用户的兴趣点,组织成查询语句:query=default:’感冒’&&kvpairs=user_tag:1=0.5:2=0.4。
4、在细排中添加表达式:tag_match(user_tag, tag, mul, sum)。则对粗排结果进行细排时,会对每条搜索结果计算个性化得分。对tag属性为“母婴”的文章,分数为:1*0.5,tag属性为“营养”的文章,分数为:1*0.4,其它tag属性的文章,得分为0。

优化OpenSearch的搜索结果相关推荐

  1. UA SIE545 优化理论基础5 搜索与整数规划1 DFS算法

    UA SIE545 优化理论基础5 搜索与整数规划1 DFS算法 DFS方法基础 邮票问题 这部分的主要目标是建立求解整数规划的方法,早期解决整数规划需要穷举,后来人们把搜索技术应用到整数规划中,极大 ...

  2. python机器学习库sklearn——参数优化(网格搜索GridSearchCV、随机搜索RandomizedSearchCV、hyperopt)

    分享一个朋友的人工智能教程.零基础!通俗易懂!风趣幽默!还带黄段子!大家可以看看是否对自己有帮助:点击打开 全栈工程师开发手册 (作者:栾鹏) python数据挖掘系列教程 优化的相关的知识内容可以参 ...

  3. 【淘宝SEO技巧】淘宝SEO优化|淘宝搜索排名规律|淘宝宝贝标题优化

    [淘宝SEO技巧]淘宝SEO优化|淘宝搜索排名规律|淘宝宝贝标题优化 淘宝网,作为最大的C2C交易平台为广大的网络创业的店长们尝到了甜头,生意蒸蒸日上.面对众多的竞争参与者,希望成交量能够更上一层楼, ...

  4. 阿里云 OpenSearch 全文搜索

    2019独角兽企业重金招聘Python工程师标准>>> https://docs.aliyun.com/#/pub/opensearch 官方 class open_searchCo ...

  5. 网站SEO优化:提升搜索排名与流量引爆

    导言: 在互联网时代,网站SEO(搜索引擎优化)是提高网站搜索排名.吸引流量.增加曝光的重要策略.通过优化网站结构.内容和链接等方面,让搜索引擎更好地理解和收录网站内容,从而为网站带来更多有价值的有机 ...

  6. emlog过滤html,Emlog 搜索优化 标题 + 全文搜索

    最近发现,使用搜索功能时,只能搜索到标题含有关键词的文章,或者使用标签搜索到有相同标签的文章. 这显然不是我想要的,我希望搜索的结果是:标题中有关键字的文章排在前面,而文章中出现关键字排在后面.所以, ...

  7. [转载] python机器学习库sklearn——参数优化(网格搜索GridSearchCV、随机搜索RandomizedSearchCV、hyperopt)

    参考链接: Python中的网格搜索优化算法 分享一个朋友的人工智能教程.零基础!通俗易懂!风趣幽默!还带黄段子!大家可以看看是否对自己有帮助:点击打开 全栈工程师开发手册 (作者:栾鹏)  pyth ...

  8. 网站SEO优化一一百度搜索资源平台

    百度搜索引擎基础知识:https://ziyuan.baidu.com/college/articleinfo?id=46 [官方说法]关于JS使用的建议:https://ziyuan.baidu.c ...

  9. Google Play如何做ASO优化?影响搜索排名的主要因素.

    今天柚鸥ASO带大家简单了解下Google Play影响搜索排名的主要因素: "Title" 应用标题 谷歌应用商店应用标题长度规定最多只允许 30 个字符,所以一定要最大化利用这 ...

最新文章

  1. spring security自定义指南
  2. String byte[] stream File之间的相互转换
  3. MapReduce编程实战之“初识”
  4. 2.2 string
  5. json对象合并的方法
  6. 前端基础部分错题记录
  7. linux逻辑分区被删除了怎么办,找到了linux分区顺序错乱修复方法
  8. java开发环境怎样选择_怎样搭建Java开发环境?
  9. python设计模式9-装饰器模式
  10. Java MyBatis 别名
  11. 前端常用插件、工具类库汇总,不要重复造轮子啦!!!
  12. 射频电路学习之滤波电路
  13. 贝叶斯公式理解与应用
  14. matlab乖离率计算,BIAS乖离率指标计算公式
  15. WuThreat身份安全云-TVD每日漏洞情报-2022-12-27
  16. python入门指南by许半仙-Python入门指南 作者:许半仙(4)
  17. 语音-小度自定义技能
  18. 组织结构图 的最简单做法
  19. 基于Rasa框架搭建中文机器人对话系统
  20. spring在项目启动时就执行特定方法

热门文章

  1. 2019.3.27个人赛
  2. 如何轻松代理您的Android设备
  3. Android中APK打包流程
  4. markdown转VNode
  5. 百度云PCS调试过程
  6. pandas数据处理基础之标准化与标签数值化
  7. 解决HTML中文乱码
  8. python改word域_python修改word
  9. jsp中四个作用域的区别
  10. Bootstrap教程简介