2015-02-10 36 views
0

elasticsearch中的icu_tokenizer似乎在遇到重音字符(如Č)时将单词分段成段,并返回奇怪的数字。例如弹性搜索:为捷克字符配置icu_tokenizer

GET /_analyze?text=OBČERSTVENÍ&tokenizer=icu_tokenizer 

回报

"tokens": [ 
     { 
     "token": "OB", 
     "start_offset": 0, 
     "end_offset": 2, 
     "type": "<ALPHANUM>", 
     "position": 1 
     }, 
     { 
     "token": "268", 
     "start_offset": 4, 
     "end_offset": 7, 
     "type": "<NUM>", 
     "position": 2 
     }, 
     { 
     "token": "ERSTVEN", 
     "start_offset": 8, 
     "end_offset": 15, 
     "type": "<ALPHANUM>", 
     "position": 3 
     } 
    ] 
} 

我不知道捷克,但快速谷歌暗示OBČERSTVENÍ是一个字。有没有办法配置弹性搜索正常工作的捷克语?

我已经如下使用icu_noramlizer试过,但

PUT /my_index_cz 
{ 
    "settings": { 
     "analysis": { 
      "analyzer": { 
       "my_analyzer": { 
        "char_filter": ["icu_normalizer"], 
        "tokenizer": "icu_tokenizer"      
       } 
      } 
     } 
    } 
} 

GET /my_index_cz/_analyze?text=OBČERSTVENÍ&analyzer=my_analyzer 

回答

1

这个问题是我用elasticsearch sense插件来查询这个并没有在数据编码正确但没有帮助。当我使用python客户端库编写测试时,它工作得很好。