我一直在使用elasticsearch--分析--用日语进行搜索,但我得到了两种非常奇怪的行为,第一种行为是,我搜索的字符不能工作,比如--“輸出貿易”除非我把它作为“輸出貿易”传递给每个字符之间的空格。此外,像ント这样的字符也不会被搜索。
这是我的配置:
.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()));我是配置错了,还是需要为字符设置一个不同的标记:“輸出貿易和ント”
谢谢
发布于 2015-05-04 10:06:21
经过一些在线研究和elasticsearch-analysis小组的一些帮助,我找到了问题,尽管我创建了分析师并告诉查询使用它,但我还需要像这样添加映射:
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();https://stackoverflow.com/questions/29820167
复制相似问题