Elasticsearch [5.4]按句子中的单词位置评分

时间:2018-04-04 10:09:35

标签: elasticsearch

我根据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,但我只需知道如何获得良好的效果。

有我的疑问:

{
  "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

分数增加但仍存在同样的问题。 并且提升参数很有意思但我们只能对一个字段产生负面影响,我需要积极推动match_phrase_prefix字段

1 个答案:

答案 0 :(得分:0)

尝试:

{
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "produitLibFr": {
              "query": "disque de frein"
            }
          }
        }
      ],
      "should": [
        {
          "match_phrase_prefix": {
            "produitLibFr": "disque de frein"
          }
        }
      ]
    }
  }
}

此查询匹配两种情况:

  • 在第一篇文件中,检索到的文档必须包含#34; disque de frein"在"produitLibFr"字段
  • 在第二篇文件中,检索到的文档应该有#dis; disque de frein"在"produitLibFr"字段内容的开头。

如果文档匹配,则两个条款的评分都会更高。要提高分数值,您可以考虑使用boost参数 - doc here