elasticsearch-analysis-kuromoji 的行为不是我所期望的
Behavior of elasticsearch-analysis-kuromoji is not what i expected
我一直在使用 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()));
我是不是配置错了,还是我需要一个不同的字符标记器,比如:
'输出贸易和 nt'
谢谢
经过一些在线研究和 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();
我一直在使用 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()));
我是不是配置错了,还是我需要一个不同的字符标记器,比如: '输出贸易和 nt'
谢谢
经过一些在线研究和 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();