подсказка завершения показывает неправильные результаты - PullRequest
0 голосов
/ 10 мая 2019

Я использую Elasticsearch.Я создал индекс автозаполнения, используя сопоставление, приведенное ниже.Я пытаюсь для множественного контекстного автозаполнения.Когда я проверил результаты, я обнаружил, что предложения не были правильными.

У меня есть сценарий иерархического автозаполнения.Я первый полевой дилер в качестве самостоятельного автозаполнения поля.Поле State имеет дилера в качестве контекста для предложений автозаполнения.Поле county имеет дилера и указывается в качестве контекста для поля автозаполнения.


mapping ={
        "mappings": {
            "panels": {
                "properties": {
                    "dealer": {
                        "type": "completion"
                    },
                    "county": {
                        "type": "completion",
                        "contexts": [{
                                "name": "dealername",
                                "type": "category",
                                "path": "dealername"
                            },
                            {
                                "name": "statename",
                                "type": "category",
                                "path": "statename"
                            }
                        ]
                    },
                    "state": {
                        "type": "completion",
                        "contexts": [{
                            "name": "dealername",
                            "type": "category",
                            "path": "dealername"
                        }]
                    },
                    "dealername":{
                        "type": "keyword"
                    },
                    "statename":{
                        "type": "keyword"
                    },
                    "countyname":{
                        "type": "keyword"
                    },
                    "meid": {
                        "type": "text"
                    }
                }
            }
        }
    }
    res = es.indices.create(index="autocomplete", ignore=[400], body=mapping)
    print(res)

    def insertstatewise():
        rows = session.execute("SELECT dealer_name, statename, county_name, meid from analytics.nearest_reco_output_1")
        i = 0
        for row in rows:
            i += 1
            yield {
                "_id": row["meid"],
                "_index": "autocomplete",
                "_type": 'panels',
                "_source":
                    {
                    "dealer": {
                    "input": [row["dealer_name"]]
                    },
                    "state": {
                    "input": [row["statename"]],
                    "contexts": {
                        "dealername": [row["dealer_name"]]
                        }
                    },
                    "county": {
                    "input": [row["county_name"]],
                    "contexts": {
                        "dealername": [row["dealer_name"]],
                        "statename": [row["statename"]]
                        }
                    },
                    "dealername": row["dealer_name"],
                    "statename": row["statename"],
                    "countyname": row["county_name"],
                    "meid": row["meid"]
                    },
            }
    xp = bulk(es, insertstatewise())
    print(xp)

когда я запрашиваю свой индекс с помощью запроса curl


curl -X POST "########:9200/autocomplete/_search?pretty" -H 'Content-Type: application/json' -d'
    {
        "suggest": {
            "state_suggestion_for_dealer" : {
                "prefix" : "dealer2",
                "completion" : {
                    "field" : "dealer",
                    "size": 10
                }
            }
        }
    }

ожидаемые результаты должны быть delaer2

Я получаю неправильные результаты для образца завершения


{
    "text" : "dealer3",
    "_index" : "autocomplete",
    "_type" : "panels",
    "_id" : "#############",
    "_score" : 1.0,
    "_source" : {
      "dealer" : {
        "input" : [
          "dealer3"
        ]
      },
      "state" : {
        "input" : [
          "Virginia"
        ],
        "contexts" : {
          "dealername" : [
            "dealer3"
          ]
        }
      },
      "county" : {
        "input" : [
          "Park"
        ],
        "contexts" : {
          "dealername" : [
            "dealer3"
          ],
          "statename" : [
            "Virginia"
          ]
        }
      },
      "dealername" : "dealer3",
      "statename" : "Virginia",
      "countyname" : "Park",
      "meid" : "#########"
    }
   }

Поскольку я запросил завершение с префиксом как дилер2, то почему в предложениях о завершении есть документы дилера3.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...