建议者(Suggesters)
Suggesters
建议功能基于通过建议者提供的文本暗示相似的术语。部分建议功能仍在开发中。
建议请求部分与_search请求中的查询部分一起定义。
注意:_suggest端点已被弃用,建议通过_search端点使用suggest。在5.0中,_search端点已经过优化,仅用于suggest搜索请求。
POST twitter/_search
{
"query" : {
"match": {
"message": "tring out Elasticsearch"
}
},
"suggest" : {
"my-suggestion" : {
"text" : "trying out Elasticsearch",
"term" : {
"field" : "message"
}
}
}
}
每个请求可以指定几个建议。每个建议用任意名称标识。在下面的例子中,请求两个suggestion。my-suggest-1和my-suggest-2 suggestions 使用term suggester,但是有不同的text。
POST _search
{
"suggest": {
"my-suggest-1" : {
"text" : "tring out Elasticsearch",
"term" : {
"field" : "message"
}
},
"my-suggest-2" : {
"text" : "kmichy",
"term" : {
"field" : "user"
}
}
}
}
以下suggest响应示例包括对my-suggest-1和my-suggest-2的suggestion响应。每个suggest part 都包含条目。每个条目实际上是来自suggest text的令牌,并且包含suggest条目文本,suggest text中的原始起始偏移量和长度以及是否找到任意数量的选项。
{
"_shards": ...
"hits": ...
"took": 2,
"timed_out": false,
"suggest": {
"my-suggest-1": [ {
"text": "tring",
"offset": 0,
"length": 5,
"options": [ {"text": "trying", "score": 0.8, "freq": 1 } ]
}, {
"text": "out",
"offset": 6,
"length": 3,
"options": []
}, {
"text": "elasticsearch",
"offset": 10,
"length": 13,
"options": []
} ],
"my-suggest-2": ...
}
}
每个选项数组包含一个选项对象,其中包含suggest text,其文档频率和与suggest 条目文本相比较的得分。分数的含义取决于使用的suggester。术语suggester的得分是基于编辑距离。
Global suggest text
为了避免重复suggest text,可以定义全局文本。在下面的示例中,suggest text在全局范围内定义,应用于my-suggest-1和my-suggest-2 suggestions。
POST _search
{
"suggest": {
"text" : "tring out Elasticsearch",
"my-suggest-1" : {
"term" : {
"field" : "message"
}
},
"my-suggest-2" : {
"term" : {
"field" : "user"
}
}
}
}
上述示例中的suggest text也可以指定为suggestion 特定选项。suggestion级别上指定的suggest text将覆盖全局级别的suggest text。
原文地址:https://www.elastic.co/guide/en/elasticsearch/reference/5.4/search-suggesters.html
浙公网安备 33010602011771号