Как использовать фильтр синонимов и фильтр гальки вместе?

Я пытаюсь использовать shingle фильтр с synonym фильтр (см. код ниже). Это дает мне вывод:

принудительно выполнено

реализовано для

на экспертизу

экзаменационные испытания

Слова enforced а также implemented происходят вместе так же, как testing а также examination, Можно ли получить следующий вывод?

применяется для

реализовано для

на экспертизу

для тестирования

Определение JSON

String json = jsonBuilder()
        .startObject()
                .field("number_of_shards", 1)
                .startObject("analysis")
                    .startObject("filter")
                        .startObject("my_shingle_filter")
                            .field("type","shingle")
                            .field("min_shingle_size",2)
                            .field("max_shingle_size",2)
                            .field("output_unigrams",false)
                        .endObject()
                        .startObject("my_syn_filter")
                            .field("type", "synonym")
                            .field("format","wordnet")
                            .field("synonyms_path","prolog/wn_s.pl")
                        .endObject()
                    .endObject()
                    .startObject("analyzer")
                        .startObject("my_shingle_analyzer")
                            .field("type", "custom")
                            .field("tokenizer","standard")
                            .field("filter",new String[]{"lowercase","my_syn_filter","my_shingle_filter"})
                        .endObject()
                    .endObject()
                .endObject()
        .endObject().string();

client.admin().indices().prepareCreate("testshingle").setSettings(ImmutableSettings.settingsBuilder()
        .loadFromSource(json))
            .execute().actionGet();

AnalyzeResponse  resp= client.admin().indices().prepareAnalyze("testshingle", "implemented for testing").setAnalyzer("my_shingle_analyzer").execute().get();
for(AnalyzeToken token:resp.getTokens()){
    System.out.println(token.getTerm());
}

0 ответов

Другие вопросы по тегам