0

名前が表示される複数のフィールドを持つドキュメントに対して名前クエリを実行しています。多くの場合、名前は各ドキュメント ノードで同じです。ただし、場合によっては異なる場合があります。最も一致するフィールド/ノードでクエリをスコアリングしたいと考えています。

したがって、次のドキュメントがインデックス化されていると仮定します。

{
  "id" : 1,
  {"object1": {"name" : 'Todd Hughes'}},
  {"object2": {"name" : 'Todd Hughes'}},
  {"object3": {"name" : 'Todd Hughes'}}
}

{
  "id" : 2,
  {"object1": {"name" : 'Todd Hunt'}},
  {"object2": {"name" : 'Todd Hunt'}},
  {"object3": {"name" : 'Ken Collins'}}
}

{
  "id" : 3,
  {"object1": {"name" : 'Todd Huddle'}},
  {"object2": {"name" : 'Todd Huddle'}},
  {"object3": {"name" : 'Todd Huddle'}}
}

「Todd Hunt」を検索して、最初に「id」が 2 の 2 番目のレコードを取得できるようにしたいと考えています。私の問題は、これらのフィールドが ngram でインデックス付けされ、他のドキュメント #1 と #3 が部分的に一致し、各オブジェクト ノード/フィールドの合計が加算されることです。だから、これは私にはうまくいきません。

"bool" : {
  "should" : [
    {:field : {"object1.name" : "Todd Hunt"}},
    {:field : {"object2.name" : "Todd Hunt"}},
    {:field : {"object3.name" : "Todd Hunt"}}
  ],
  "minimum_number_should_match" : 1
}

カスタムスコアリングとランキングを読んでみましたが、頭がぐるぐる回っています。各 object1、object2、または object 3 の最高ランクが最終スコアになるようにクエリを構成する方法についてのアイデアはありますか?

4

1 に答える 1