ディスジャンクション最大クエリ

1つ以上のラップされたクエリに一致するドキュメントを返します。これらはクエリ句または句と呼ばれます。

返されたドキュメントが複数のクエリ句に一致する場合、dis_maxクエリは、いずれかの一致する句からの最高の関連性スコアをドキュメントに割り当て、追加の一致するサブクエリに対してはタイブレイキングの増分を加えます。

例のリクエスト

Python

  1. resp = client.search(
  2. query={
  3. "dis_max": {
  4. "queries": [
  5. {
  6. "term": {
  7. "title": "Quick pets"
  8. }
  9. },
  10. {
  11. "term": {
  12. "body": "Quick pets"
  13. }
  14. }
  15. ],
  16. "tie_breaker": 0.7
  17. }
  18. },
  19. )
  20. print(resp)

Ruby

  1. response = client.search(
  2. body: {
  3. query: {
  4. dis_max: {
  5. queries: [
  6. {
  7. term: {
  8. title: 'Quick pets'
  9. }
  10. },
  11. {
  12. term: {
  13. body: 'Quick pets'
  14. }
  15. }
  16. ],
  17. tie_breaker: 0.7
  18. }
  19. }
  20. }
  21. )
  22. puts response

Js

  1. const response = await client.search({
  2. query: {
  3. dis_max: {
  4. queries: [
  5. {
  6. term: {
  7. title: "Quick pets",
  8. },
  9. },
  10. {
  11. term: {
  12. body: "Quick pets",
  13. },
  14. },
  15. ],
  16. tie_breaker: 0.7,
  17. },
  18. },
  19. });
  20. console.log(response);

コンソール

  1. GET /_search
  2. {
  3. "query": {
  4. "dis_max": {
  5. "queries": [
  6. { "term": { "title": "Quick pets" } },
  7. { "term": { "body": "Quick pets" } }
  8. ],
  9. "tie_breaker": 0.7
  10. }
  11. }
  12. }

dis_maxのトップレベルパラメータ

  • queries
  • (必須、クエリオブジェクトの配列)1つ以上のクエリ句を含みます。返されたドキュメントはこれらのクエリの1つ以上に一致する必要があります。ドキュメントが複数のクエリに一致する場合、Elasticsearchは最高の関連性スコアを使用します。
  • tie_breaker
  • (オプション、浮動小数点)01.0の間の浮動小数点数で、複数のクエリ句に一致するドキュメントの関連性スコアを増加させるために使用されます。デフォルトは0.0です。
    tie_breaker値を使用して、複数のフィールドに同じ用語を含むドキュメントに、これらの複数のフィールドの中で最も良いフィールドにのみこの用語を含むドキュメントよりも高い関連性スコアを割り当てることができますが、異なる2つの用語が複数のフィールドにある場合のより良いケースと混同しないようにします。
    ドキュメントが複数の句に一致する場合、dis_maxクエリは次のようにドキュメントの関連性スコアを計算します:
    hebin-ul-start
    • 最高のスコアを持つ一致する句からの関連性スコアを取得します。
    • 他の一致する句からのスコアにtie_breaker値を掛けます。
    • 最高のスコアに掛け算されたスコアを加えます。
      tie_breaker値が0.0より大きい場合、すべての一致する句がカウントされますが、最高のスコアを持つ句が最も重要です。
      hebin-ul-end