首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Elasticsearch:当术语不存在时,正向提升

Elasticsearch:当术语不存在时,正向提升
EN

Stack Overflow用户
提问于 2016-08-26 02:29:07
回答 1查看 320关注 0票数 1

我正在尝试使用Elasticsearch实现一个简单的产品搜索。

我遇到的一个问题是,搜索查询通常都有隐含的术语。例如,当有人输入"lenovo thinkpad battery“时,他们想要一块电池。然而,当有人只输入"lenovo thinkpad“时,他们想要一台笔记本电脑,即使这个词没有出现在查询中。

我对此的解决方案如下。手动组合一堆相关的术语。例如,对于计算机/膝上型计算机类别,我可以具有术语“电池”、“键盘”、“电源线”、“适配器”、“电缆”、“保护计划”等。然后,只要在搜索查询中不存在这样的术语,我就肯定地提升不包含这些术语的所有结果。

这可以通过Elasticsearch实现吗?

编辑:

示例文档

代码语言:javascript
复制
{"_source": { "item_title": "lenovo thinkpad white/black" },
 "_source": { "item_title": "lenovo thinkpad battery" }
}

映射

代码语言:javascript
复制
{
    "properties": {
        "item_title": {
            "type": "string"
        }
    }
}

查询

代码语言:javascript
复制
POST my_index/my_type/_search
{
    "from": 0, 
    "size": 10,
    "query": {
        "match": {
            "item_title": "lenovo thinkpad"
        }
    }
}

查询结果:

代码语言:javascript
复制
"hits": {
  "total": 2,
  "max_score": 0.2169777,
  "hits": [
     {
        "_index": "my_index",
        "_type": "my_type",
        "_id": "2",
        "_score": 0.2169777,
        "_source": {
           "item_title": "lenovo thinkpad battery"
        }
     },
     {
        "_index": "my_index",
        "_type": "my_type",
        "_id": "1",
        "_score": 0.2169777,
        "_source": {
           "item_title": "lenovo thinkpad black/white"
        }
     }
  ]
}

注意,这两个结果的得分是相同的。但是,由于查询"lenovo thinkpad“不包含我手动挑选出的特殊术语之一,如”电池“,我希望不包含该术语的文档为正增强,因此具有"item_title":"lenovo thinkpad白/黑”的文档在查询结果中应该有较高的分数。

EN

回答 1

Stack Overflow用户

发布于 2016-08-26 03:42:56

如果我在我的Wikipedia索引中执行以下查询

代码语言:javascript
复制
GET /_search
{
   "query": {
      "query_string": {
         "query": "(Darmstadt)^10 (NOT School)^8",
         "fields": [
            "title^3"
         ],
         "phrase_slop": 3,
         "use_dis_max": true
      }
   }
}

我仍然把达姆施塔特学院排在了后面(它通常排在前10名)

如果我执行以下查询

代码语言:javascript
复制
GET /_search
{
   "query": {
      "query_string": {
         "query": "(Darmstadt AND SCHOOL )^10 (NOT School)^8",
         "fields": [
            "title^3"
         ],
         "phrase_slop": 3,
         "use_dis_max": true
      }
   }
}

我得到了达姆施塔特学校作为第一个结果,尽管它在NOT子句中。所以我建议你做一些类似的事情。

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

https://stackoverflow.com/questions/39152401

复制
相关文章

相似问题

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