Elasticsearch Analyzer用于此完成建议器的内容?

时间:2014-07-22 23:26:57

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

我是Elasticsearch的新手,我现在正试图了解completion suggester

的分析器

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

  • 伦敦
  • 伦敦眼
  • 伦敦地牢
  • 等...

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

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

当建议人的文字输入只是字母L

时,我现在能够获得上述所有三条建议

但是,当用户键入单词The London Eye时,我希望eye返回,同样当用户输入The London Dungeon时返回Dungeon(当然,这些条款的任何前缀)

我一直在使用不同的分析仪和设置,但今天没有成功。

我需要使用哪种分析仪来实现上述目标?

1 个答案:

答案 0 :(得分:3)

您可以使用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"
    }
}'