Elasticsearch通过提升来建议上下文

时间:2018-12-08 13:59:52

标签: elasticsearch autosuggest

您好,我正在尝试为旅游网站创建自动填充建议程序。您可以输入“从城市”(纽约,芝加哥,洛杉矶等),然后输入“到城市”。 (图片为例,并非来自我的网站) enter image description here

对于每个单独的框都可以使用完成提示器,这没有任何问题,但是当我想根据“来自城市”返回“到城市”时,这变得更加复杂。 我解释一下,我们列出了一些热门路线,并给出了得分: 纽约到芝加哥= 10 纽约到波士顿= 8 等等... 如果某人在“完成提示”顶部寻找“到城市”时已经选择“纽约”作为“从城市”,我希望按流行路线的分数对结果进行排序。 我尝试按以下方式映射城市,但无法在每种情况下都将得分添加为提升值(上面10表示芝加哥,8表示波士顿)。 关于如何在我的查询中整合分数的任何想法?

索引

{
settings: {
  "analysis": {
    "filter": {
      "autocomplete_filter": {
        "type":     "edge_ngram",
        "min_gram": 2,
        "max_gram": 20
      },
      "shingle_filter": {
        "type": "shingle",
        "max_shingle_size": 3
      }
    },
    "analyzer": {
      "autocomplete": {
        "type":      "custom",
        "tokenizer": "standard",
        "filter": [
          "lowercase",
          "shingle_filter"
        ]
      }
    }
  }
}

}

映射:

{
properties: {
  city: { type: 'text'},
  station: {type: 'text'},
  country: { type: 'text'},
  countryCode: { type: 'text'},
  countrySlug: { type: 'text'},
  stationSlug: {type: 'text'},
  citySlug: {type: 'text'},
  name_suggest: {
    type: 'completion',
    analyzer: 'autocomplete',
    search_analyzer: 'standard',
    contexts: [
      {
        name: 'location_type',
        type: 'category',
      },
      {
        name: 'from_city',
        type: 'category',
      },
    ],
  },
},

}

0 个答案:

没有答案