您好我正在使用 Elastic Search 开发迷你应用程序。
环境 :-
settingBuilder = XContentFactory.jsonBuilder().startObject()
.startObject("index")
.startObject("analysis")
.startObject("analyzer")
.startObject("custom_analyzer")
.field("type", "custom")
.field("tokenizer","keyword")
.field("filter", new String[]{"standard","ngram_filters"})
.endObject()
.endObject()
.startObject("filter")
.startObject("ngram_filters")
.field("type", "nGram")
.field("min_gram", "1")
.field("max_gram","10")
.endObject()
.endObject()
.endObject()
.endObject()
.endObject();
映射: -
contentBuilder = XContentFactory.jsonBuilder().startObject()
.startObject("students")
.startObject("properties")
.startObject("searchColumn")
.field("analyzer", "custom_analyzer")
.field("type", "string")
.endObject()
.startObject("firstName")
.field("type","string")
.field("analyzer", "custom_analyzer")
.field("store", "yes")
.endObject()
.startObject("lastName")
.field("type","string")
.field("analyzer", "custom_analyzer")
.field("store", "yes")
.endObject()
.startObject("registerNumber")
.field("type", "long")
.field("analyzer", "custom_analyzer")
.field("store", "yes")
.endObject()
.endObject()
.endObject()
.endObject();
在这里,我指定了 nGram 过滤器。但由于某种原因,在进行搜索过程时,我不想为 prefixFilter 或 prefixQuery 应用分析器。有什么选择吗?我在这里面临的问题是,
例如。
apple
one apple
two apple
假设这些是示例中的 firstName 值。当我搜索前缀字符'a'时,我必须只想获得'apple'文档。但是现在,由于 nGram,我得到了所有结果......你能请任何解决方案吗?