私は私の春ブーツのAppでElasticsearch 2.4.3を使用していますし、使用次のクエリ私は最初のクエリまたは2番目のクエリは、ヒットを取得レスポンスを、取得したいElasticsearchのJava API - ブールクエリ演算子
QueryBuilder qb = new BoolQueryBuilder()
.must(QueryBuilders.multiMatchQuery(term, "phoneticFirstName", "phoneticLastName", "phoneticLocationName", "phoneticCompanyName")
.analyzer("atsCustomSearchAnalyzer")
.operator(Operator.AND))
.must(QueryBuilders.multiMatchQuery(term, "ngramFirstName^3", "ngramLastName^3", "ngramLocationName^3", "ngramCompanyName^3", "_all")
.analyzer("atsCustomSearchAnalyzer")
.operator(Operator.AND));
私のコードでそれを変更するのを手伝ってもらえますか?人や活動:
UPDATE
"atsCustomPhoneticAnalyzer":{
"type":"custom",
"tokenizer":"whitespace",
"filter":["lowercase","asciifolding","atsPhoneticFilter"]
},
"atsCustomSearchAnalyzer":{
"type":"custom",
"tokenizer":"whitespace",
"filter":["lowercase","asciifolding","umlautStemmer","germanStemmer"]
}
UPDATE#2
QueryBuilder qb = new BoolQueryBuilder()
.should(QueryBuilders.multiMatchQuery(term, "ngramFirstName", "ngramLastName", "ngramLocationName", "ngramCompanyName")
.type(Type.CROSS_FIELDS)
.analyzer("atsCustomSearchAnalyzer")
.operator(Operator.AND)
.boost(3))
.should(QueryBuilders.multiMatchQuery(term, "phoneticLastName")
.analyzer("atsCustomPhoneticAnalyzer")
.operator(Operator.AND))
.should(QueryBuilders.matchQuery(term, "_all")
.analyzer("atsCustomSearchAnalyzer")
.operator(Operator.AND))
.minimumNumberShouldMatch(1);
私は2つのインデックスを持っています。私が2番目のクエリをコメントアウトするとき、私はヒットを人と活動から得る。 3つのクエリがすべて存在する場合、アクティビティからのヒットはもう存在しません....
アイデア?
変更' must'を追加し、 'minimumShouldMatch(1)' – Val
おかげヴァルを追加し、それが動作します!しかし、私のKoelnerphoneticクエリは動作しません:(それは "Mayer/Maier/Meyer/Meier"のようなものを処理し、これらのものは同じであると言います...私の質問で私はこれについてのマッピング/設定を更新しました –
Ok、 nvm .....最初のクエリで間違ったアナライザを使用しました –