こんにちは、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のおかげですべての結果を取得しています...これに対する解決策を教えてください。