Elasticsearch:multi_match best_fields还是most_fields?

时间:2017-07-05 07:02:43

标签: elasticsearch

我试图搜索这类文件:

            {
               "id_stage": "4598",
               "n_stage": "1331400117S",
               "intitule_stage": "Comment travailler avec le délire dans la psychose ? - Niveau II -",
               "objectifs": ">Poursuivre et approfondir les enseignements théoriques du stage Niveau I sur le même thème.\r\n>Savoir mettre en pratique ces connaissances par l'analyse \"active\" du discours du patient.",
               "contenu": "*Rappel de la théorie découverte lors du Niveau I : travail à  partir de cas de schizophrénie, de paranoïa et de névrose afin d'affiner la notion de clinique différentielle.\r\n*Le psychotique et sa famille :\r\n-Notion de transmission intra-familiale.\r\n-Les relations parents/enfants dans la psychose.\r\n*Les structures maniaques et mélancoliques, spécificité du fonctionnement.\r\n*Absence de sentiment de culpabilité et confusion diagnostique entre psychose et perversion. Essai d'approche différentielle.\r\n*Les psychoses blanches (sans délire apparent).\r\n",
               "pre_requis": "",
               "mmp": "",
               "sessions": [
                  {
                     "id_session": "5332",
                     "debut": "2017-12-04",
                     "date_fin": "2017-12-08",
                     "ville": "LA ROCHELLE"
                  }
               ],
               "mots_cles": [
                  "DELIRE",
                  "PSYCHOSE"
               ]
            }

这是我的疑问:

            {
            "from": 0,
            "size": 100,
            "min_score": 4.5,
            "query": {
              "bool": {
                "must": 
                    [
                        {
                        "multi_match": {
                            "fields": 
                            [
                                "sessions^2",
                                "contenu^1",
                                "objectifs^1",
                                "intitule_stage^3",
                                "mmp^1",
                                "mots_cles^3"
                            ],

                            "query": "' . $request . '",
                            "fuzziness" : "AUTO",
                            "prefix_length" : 2,
                            "type" : "best_fields"
                            }
                        },
                        {
                        "query_string": {
                            "fields": 
                                [
                                    "n_stage"
                                ],
                            "query": "*' . $filter_year . 'S"
                            }
                        }
                    ]
                }
            }
          }

问题在于搜索:"障碍"返回66结果和结果"障碍La Rochelle"返回100个结果(限制),它应该返回更少的因为" La Rochelle"只能出现在文档的会话字段中

也许我应该使用除multi_match以外的其他东西?

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

我认为这是正常现象:您提供的关键字越多,best_fields和大多数其他multi_match结果就会带来越多的结果。

关键是让残障人士拉罗谢尔排名第一。