首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在ElasticSearch查询结果中使最匹配项达到最高值

如何在ElasticSearch查询结果中使最匹配项达到最高值
EN

Stack Overflow用户
提问于 2015-03-10 12:55:55
回答 1查看 381关注 0票数 4

我正在使用ElasticSearch构建像nexttag.comthefind.com这样的电子商务搜索引擎。

有些项目如下:

  1. iPhone 6 Case - iPhone 6钱包箱,iPhone 6皮箱,iPhone iPhone 6 4.7'‘黑色的带信用卡持卡器的翻盖钱包皮箱
  2. iPhone 6 /6 Plus快速入门指南:(适用于iPhone 4s、iPhone 5、iPhone 5s和iPhone 5c、iPhone 6、iPhone 6+ )
  3. iPhone 6箱,iPhone 6 (4.7)翻盖箱混合系列- iPhone 6 (4.7)皮革箱-踢立(PULPC-G-001)iPhone 6(4.7英寸)棕色
  4. 苹果iPhone 6,黄金,16 GB (解锁)

当我们询问"iPhone 6“时,我如何使”苹果iPhone“在顶部,或没有'iPhone案例‘或'iPhone快速指南’。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-10 22:04:06

我建议您使用elasticsearch提供的函数评分查询功能。function_score允许您修改查询检索的文档的分数。

简单地说,您要做的是通过使用您提供的自定义函数(或更多的函数)修改每个文档的评分,从而在搜索结果上添加一些后置处理。

您有各种实现得分函数的选项,您的选择应该取决于您的具体情况。

例如,我可以建议您使用field_value_factor函数,它允许您使用文档中的字段来影响得分。这意味着您应该对文档中的boost因子进行索引(例如,在每个文档中添加一个"boost_factor“字段,并将其值设置为1.5,对于cases或其他任何东西设置为1.0 )。这有一个缺点,那就是包括实际数据内部的提升,以及未来的变化将需要重新编制数据索引。

在这种情况下,函数将是

代码语言:javascript
运行
复制
field_value_factor": {
  "field": "boost_factor",
  "factor": 1.0,
  "modifier": "none"
}

这将转化为以下评分公式:

代码语言:javascript
运行
复制
1.0 * doc['popularity'].value

请查看官方文件中的任何细节:https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-function-score-query.html#query-dsl-function-score-query

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28964293

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档