小编ral*_*lph的帖子

如何同时使用同义词过滤器和带状疱疹过滤器?

我正在尝试使用带有shingle过滤synonym器的过滤器(请参见下面的代码)。这给了我输出:

强制执行

为实现

进行检查

考试测试

词语enforcedimplemented正在发生的一起相同testingexamination。是否有可能得到以下输出?

强制执行

为实现

进行检查

供测试用

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());
}
Run Code Online (Sandbox Code Playgroud)

java synonym elasticsearch shingles

5
推荐指数
0
解决办法
303
查看次数

标签 统计

elasticsearch ×1

java ×1

shingles ×1

synonym ×1