您好,我正在尝试为旅游网站创建自动填充建议程序。您可以输入“从城市”(纽约,芝加哥,洛杉矶等),然后输入“到城市”。 (图片为例,并非来自我的网站)
对于每个单独的框都可以使用完成提示器,这没有任何问题,但是当我想根据“来自城市”返回“到城市”时,这变得更加复杂。 我解释一下,我们列出了一些热门路线,并给出了得分: 纽约到芝加哥= 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',
},
],
},
},
}