What Elasticsearch Analyzer to use for this completion suggester?

和自甴很熟 提交于 2019-12-07 07:47:54

问题


I'm very new to Elasticsearch and am currently trying to get my head around analyzers with respect to the completion suggester

I have a list of places like so:

  • London
  • The London Eye
  • The London Dungeon
  • etc...

By setting the mapping for a completion suggester to the following:

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

I am now able to get all three of the above suggestions returned when the suggesters text input is simply the letter L

However I would like The London Eye to be returned when the user types the word eye and likewise to have The London Dungeon returned when the user types Dungeon (And of course for any prefixes of those terms)

I have been playing with the different analyzers and settings for the better part of today with no success.

What kind of analyzer do I need to use to achieve the above?


回答1:


You can achieve what you want with the Completion Suggester. Use multiple input fields and a single unified output. If there is a match on one of the input fields the output field will be returned.

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"
    }
}'


来源:https://stackoverflow.com/questions/24899480/what-elasticsearch-analyzer-to-use-for-this-completion-suggester

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!