【问题标题】:What Elasticsearch Analyzer to use for this completion suggester?这个完成建议器使用什么 Elasticsearch Analyzer?
【发布时间】:2014-09-13 23:42:36
【问题描述】:

我是 Elasticsearch 的新手,目前正在尝试了解有关 completion suggester 的分析器

我有一个这样的地方列表:

  • 伦敦
  • 伦敦眼
  • 伦敦地牢
  • 等等……

通过将完成建议器的映射设置为以下内容:

'place_suggest': {
     'type': 'completion',
     'payloads': true,
     'index_analyzer' : 'stop',
     'search_analyzer' : 'stop',
     'preserve_position_increments' : false
}

当建议者文本输入只是字母 L 时,我现在能够返回所有上述三个建议

但是,我希望在用户键入单词 eye 时返回 The London Eye,并且同样希望在用户键入 Dungeon 时返回 The London Dungeon(当然对于这些术语的任何前缀)

在今天的大部分时间里,我一直在使用不同的分析器和设置,但没有成功。

我需要使用什么样的分析仪来实现上述目标?

【问题讨论】:

标签: elasticsearch autocomplete autosuggest search-suggestion query-analyzer


【解决方案1】:

您可以使用Completion Suggester 实现您想要的。使用多个输入字段和一个统一的输出。如果其中一个输入字段匹配,则将返回输出字段。

curl -X PUT localhost:9200/places/place/1 -d '
{
    "title" :         "The London Eye",
    "place_suggest" : {
        "input" :      [
            "The London Eye",
            "Eye"
        ],
        "output":"The London Eye"
     }
}'

curl -X PUT localhost:9200/places/place/2 -d '
{  
    "title" :         "The London Dungeon",
    "place_suggest" : {
        "input" :      [
            "The London Dungeon",
            "Dungeon"
         ],
         "output":"The London Dungeon"
    }
}'

【讨论】:

  • 我认为这不应该是一个公认的答案。如果有人尝试通过“伦敦”进行搜索怎么办?我相信在输入中添加“伦敦”会给出输出,但这需要在输入中。悉达多已经在使用完成建议器。您能否通过建议适当的分析器来证明答案的合理性?否则我认为这个答案是不正确的。谢谢
猜你喜欢
  • 2022-01-22
  • 1970-01-01
  • 2023-04-08
  • 1970-01-01
  • 2020-07-14
  • 2023-03-12
  • 1970-01-01
  • 2015-02-19
  • 1970-01-01
相关资源
最近更新 更多