Elasticsearch Completion Suggester字段包含逗号分隔值

时间:2015-04-29 13:04:25

标签: search lucene.net nest elasticsearch

我有一个包含逗号分隔值的字段,我想对其执行建议。

 {
    "description" : "Breakfast,Sandwich,Maker"
 }

在键入时执行建议时是否可以获取适用的令牌? 例如: 当我说break时,我怎样才能获得Breakfast而不是Breakfast,Sandwich,Maker

我尝试过使用commatokenizer,但似乎没有帮助

1 个答案:

答案 0 :(得分:0)

正如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