【问题标题】:Elasticsearch Completion Suggester field contains comma separated valuesElasticsearch Completion Suggester 字段包含逗号分隔值
【发布时间】:2015-07-08 19:01:07
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: search lucene.net nest elasticsearch


    【解决方案1】:

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

    【讨论】:

    • 作为一种解决方法,是否可以跨多个字段执行建议?
    • 您可以使用多个建议器,每个字段一个。如果您可以修改您的规范,您还可以简单地对数组提出建议,如我的编辑中所示(而不是具有逗号分隔值的字符串)
    猜你喜欢
    • 2015-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多