我正在使用Elasticsearch实现标签自动完成器。 我的标签存储在索引文档中的各种String数组中:
{
...
"SKILLS": {
"INDUSTRIES_SOLUTIONS": [
"project-management"
],
"SKILLS_COMPETENCIES": [
"javascript"
],
"HIGHLIGHTED": [],
"tag_suggest": {
"input": [
"javascript",
"hibernate",
"project-management"
]
},
"JOB_ROLES": [
"hibernate"
]
}
}
正如您所看到的,我将它们包含在tag_suggest对象中并以一种方式映射它,以便能够使用这种查询查询_suggest api:
{
"tag_suggest":{
"text":"jav",
"completion": {
"field" : "SKILLS.tag_suggest",
"fuzzy" : {
"fuzziness" : 1
}
}
}
}
正确返回:
{
"_shards": {
"total": 5,
"successful": 5,
"failed": 0
},
"tag_suggest": [
{
"text": "jav",
"offset": 0,
"length": 3,
"options": [
{
"text": "java",
"score": 1
},
{
"text": "javascript",
"score": 1
}
]
}
]
}
我想要做的是能够根据匹配文档的数量对结果进行排序。 例如,如果“java”标记包含在1个文档中并且javascript包含在10个文档中,我希望后者作为第一个建议结果出现。一个很好的将是匹配文档的数量,类似Stackoverflow。 我该如何实现此功能?完成正确的方法去?谢谢。