elasticsearch,Autocomplete,elasticsearch" /> elasticsearch,Autocomplete,elasticsearch" />

Autocomplete Elasticsearch完成建议,自定义订购

Autocomplete Elasticsearch完成建议,自定义订购,autocomplete,elasticsearch,Autocomplete,elasticsearch,是否有一种方法可以在Elasticsearch功能“Completion suggester”中实现自定义排序,而无需在索引期间提供包含“权重”属性的单独字段 我的目标是根据字符串长度(或类似的相关性)对建议进行排序,以便短单词的得分高于长单词 下面是我想提供自动完成功能的字段的映射示例: ... skills: { type: "nested", include_in_parent: true, properties: { name: {

是否有一种方法可以在Elasticsearch功能“Completion suggester”中实现自定义排序,而无需在索引期间提供包含“权重”属性的单独字段

我的目标是根据字符串长度(或类似的相关性)对建议进行排序,以便短单词的得分高于长单词

下面是我想提供自动完成功能的字段的映射示例:

...
skills: {
  type: "nested", 
  include_in_parent: true, 
  properties: {            
    name: {
      type: "multi_field",
      fields: {
        name: {type: "string"},
        original: {type : "string", analyzer : "string_lowercase", include_in_all : false},                   
        suggest: {type: "completion", index_analyzer: "simple", search_analyzer: "simple"}
      }              
    }
  }
}
...
这里我提供了几个不同的字段,“原始”字段用于在查询中过滤,“建议”字段用于完成建议

索引时我的数据可能如下所示:

...
"skills": [
  {
     "name": "C",
     "source": [
        "linkedin"
     ]
  },
  {
     "name": "Computer Science",
     "source": [
        "stackoverflow"
     ]
  },
]
...
...
"skills_suggest": [
  {
    "input": ["C"],
    "output": "C",
    "weight" : 100
  },
  {
    "input": ["Computer Science"],
    "output": "Computer Science",
    "weight" : 50
  }
]
...
我试图避免的是,在编制索引时必须提供一个额外字段,并自己为其添加权重,如下所示:

...
"skills": [
  {
     "name": "C",
     "source": [
        "linkedin"
     ]
  },
  {
     "name": "Computer Science",
     "source": [
        "stackoverflow"
     ]
  },
]
...
...
"skills_suggest": [
  {
    "input": ["C"],
    "output": "C",
    "weight" : 100
  },
  {
    "input": ["Computer Science"],
    "output": "Computer Science",
    "weight" : 50
  }
]
...
我之所以尝试这样做,是因为我在应用程序中的搜索字段上使用了自动完成功能。我在搜索字段下方的下拉列表中显示了10个最高点击率。我的问题是,当我有这么多技能可供选择时,当我输入字母“C”时,编程语言“C”的实际技能得分低于较长的单词,因此没有出现在我的前10名下拉列表中