2015-04-23 539 views
0

我一直在使用elasticsearch-analysis-kuromoji来执行日语搜索,但是我收到了两个很奇怪的行为,第一个是我搜索的字符将不起作用,例如 - '输出贸易'将不起作用,除非我将它作为'输出贸易'传递给每个角色之间的空格。 此外,像トト等字符不搜索。elasticsearch-analysis-kuromoji的行为不是我所期望的

这是我的配置:

  .setSettings(ImmutableSettings.settingsBuilder().loadFromSource(jsonBuilder() 
        .startObject() 
        .startObject("analysis") 
          // 
        .startObject("tokenizer") 
        .startObject("kuromoji_user_dict") 
        .field("type", "kuromoji_tokenizer") 
        .field("mode", "extended") 
        .field("discard_punctuation", "false") 
        .endObject() 
        .endObject() 
          // 
        .startObject("analyzer") 
        .startObject(JAPANESE_LANGUAGE_ANALYSIS) 
        .field("type", "custom") 
        .field("tokenizer", "kuromoji_user_dict") 
        .endObject() 
        .endObject() 
          // 

        .endObject() 
        .endObject().string())); 

上午我配置错了或者我需要一个不同的tokeniser像字符: '输出贸易和ント'

谢谢

回答

0

后一些在线研究和一些来自elasticsearch-analysis-kuromoji团队的帮助我能够找到问题,即使我创建了分析师并告诉查询使用它,我也需要添加像这样的映射:

XContentBuilder xbMapping = 
     jsonBuilder() 
       .startObject() 
       .startObject(indexType) 
       .startObject("properties") 
       .startObject("source") 
       .field("type", "string") 
       .endObject() 
       .startObject("text") 
       .field("type", "string") 
       .field("analyzer", JAPANESE_LANGUAGE_ANALYSIS) 
       .endObject() 
       .endObject() 
       .endObject() 
       .endObject(); 

elasticSearchClient.admin().indices() 
     .preparePutMapping(indexName) 
     .setType(indexType) 
     .setSource(xbMapping) 
     .execute().get(); 
相关问题