首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Elasticsearch [5.4]根据句子中的单词位置进行评分

Elasticsearch [5.4]根据句子中的单词位置进行评分
EN

Stack Overflow用户
提问于 2018-04-04 18:09:35
回答 1查看 333关注 0票数 0

我为我的搜索引擎搜索一个基于ES 5.4的解决方案。当我的用户写了一个请求时,如果我的一个结果以相同的单词开始,我需要给出一个更好的分数。

对我来说,当我的客户在我的搜索栏中写下"disque de frein“时,所有的第一个结果都是

"disque de frein pour golf“

"disque de frein pour porsche“

"disque de frein pour audi“

然后

“de disque de frein的保护”

但现在,最后的结果得到了比其他结果更好的分数。

顺便说一下,我使用FOSElasticaBundle,但我只需要知道如何才能获得好的结果。

下面是我的问题:

代码语言:javascript
复制
{
  "query":{
    "bool":{
      "should":[
        {
          "match":{
            "produitLibFr":{
              "query":"disque de frein"
            }
          }
        }]
    }
  }
}

results :

{
    "_index": "app",
    "_type": "produit",
    "_id": "41666191",
    "_score": 10.558487,
    "_source": {
      "produitRef": "FA42436",
      "produitLibFr": "Pied à coulisse pour disques de frein",
      "produitLibEs": "",
      "produitLibGb": "",
      "produitLibNl": "",
      "produitLibPt": ""
    }
  },


{
    "_index": "app",
    "_type": "produit",
    "_id": "41666369",
    "_score": 10.5379715,
    "_source": {
      "produitRef": "FA43075",
      "produitLibFr": "Module freins à disques",
      "produitLibEs": "",
      "produitLibGb": "",
      "produitLibNl": "",
      "produitLibPt": ""
    }
  },

{
    "_index": "app",
    "_type": "produit",
    "_id": "67938479",
    "_score": 9.800581,
    "_source": {
      "produitRef": "GH28306",
      "produitLibFr": "Disque de frein arrière pour Scirocco & Corrado",
      "produitLibEs": "1 Disco de freno trasero para Scirocco & Corrado",
      "produitLibGb": "1 Rear brake disc for Scirocco & Corrado",
      "produitLibNl": "1 remschijf voor de achterrem voor Scirocco & Corrado",
      "produitLibPt": ""
    }
  }

我要把最后一个放在第一个位置...

你有线索给我吗?

谢谢!

编辑

我尝试了@Lupanoide解决方案,得到了以下结果:

Appareil de mesure pour disques de frein - 30.441166

Accessoires pour mesurer les disques de frein - 30.441166

Appareil de mesure pour disques de frein - 30.204206

Accessoires pour mesurer les disques de frein - 29.945782

Protecteur de disque de frein arrière droit - 28.547125

然后是好的那一个:

Disque de frein arrière pour Scirocco & Corrado - 28.547125

分数增加了,但仍然存在同样的问题。boost参数很有趣,但我们只能负地提升一个字段,我需要正向提升match_phrase_prefix字段

EN

回答 1

Stack Overflow用户

发布于 2018-04-04 19:06:50

尝试:

代码语言:javascript
复制
{
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "produitLibFr": {
              "query": "disque de frein"
            }
          }
        }
      ],
      "should": [
        {
          "match_phrase_prefix": {
            "produitLibFr": "disque de frein"
          }
        }
      ]
    }
  }
}

此查询匹配两种情况:

在第一个文档中,检索到的文档的"produitLibFr"字段中必须有“ de frein”。在第二个文档中,检索到的文档的content of

  • 字段的开头必须有"disque de frein“。

如果文档匹配,则两个子句都将具有更高的评级分数。要增加分数值,可以考虑使用boost参数- doc here

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

https://stackoverflow.com/questions/49648363

复制
相关文章

相似问题

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