2015-04-23 2 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();