Elasticsearch Completion Suggester 字段包含逗号分隔值
Elasticsearch Completion Suggester field contains comma separated values
我有一个包含逗号分隔值的字段,我想对其执行建议。
{
"description" : "Breakfast,Sandwich,Maker"
}
是否可以在您键入时执行建议时仅获取适用的令牌??
例如:
当我说break
时,我怎么只得到Breakfast
而没有得到Breakfast,Sandwich,Maker
?
我试过使用 commatokenizer,但似乎没有用
如 documentation 中所述,您可以通过这样的索引提供多个可能的输入:
curl -X PUT 'localhost:9200/music/song/1?refresh=true' -d '{
"description" : "Breakfast,Sandwich,Maker",
"suggest" : {
"input": [ "Breakfast", "Sandwitch", "Maker" ],
"output": "Breakfast,Sandwich,Maker"
}
}'
这样,您建议将列表中的任何单词作为输入。
无法从 Elasticsearch 获得相应的单词作为建议,但作为一种解决方法,您可以在 Elasticsearch 之外使用分词器来拆分建议的字符串,并仅选择以输入作为前缀的字符串。
编辑:更好的解决方案是使用数组而不是逗号分隔值,但它不符合您的规范...(看看这个:Elasticsearch autocomplete search on array field)
我有一个包含逗号分隔值的字段,我想对其执行建议。
{
"description" : "Breakfast,Sandwich,Maker"
}
是否可以在您键入时执行建议时仅获取适用的令牌??
例如:
当我说break
时,我怎么只得到Breakfast
而没有得到Breakfast,Sandwich,Maker
?
我试过使用 commatokenizer,但似乎没有用
如 documentation 中所述,您可以通过这样的索引提供多个可能的输入:
curl -X PUT 'localhost:9200/music/song/1?refresh=true' -d '{
"description" : "Breakfast,Sandwich,Maker",
"suggest" : {
"input": [ "Breakfast", "Sandwitch", "Maker" ],
"output": "Breakfast,Sandwich,Maker"
}
}'
这样,您建议将列表中的任何单词作为输入。
无法从 Elasticsearch 获得相应的单词作为建议,但作为一种解决方法,您可以在 Elasticsearch 之外使用分词器来拆分建议的字符串,并仅选择以输入作为前缀的字符串。
编辑:更好的解决方案是使用数组而不是逗号分隔值,但它不符合您的规范...(看看这个:Elasticsearch autocomplete search on array field)