0

いくつかのブースト ルールに従ってクエリ結果を並べ替えたいと同時に、できるだけ作成日で並べ替えたいのですが、created_at 並べ替えを追加すると、すべてが変更され、結果が関連しなくなります。したがって、それを行う唯一の方法は、created_atフィールドをブーストすることだと思います(最新のものは、そのブーストのスコアを計算する際に最大のボーナスを持っています)が、それを実装する方法がわかりません。これは私のクエリです:

query = {
  "query" : {
    "bool" : {
      "must" : [
        {
          "range" : {
            "deadline" : {
              "gte" : "2016-05-30T11:39:10+02:00"
            }
          }
        },
        {
          "terms" : {
            "state" : [
              "open"
            ]
          }
        },
        {
          "query_string" : {
            "query" : "chant",
            "default_operator" : "AND",
            "analyzer" : "search_francais",
            "fields" : [
              "title^6",
              "description",
              "brand",
              "category_name"
            ]
          }
        }
      ]
    }
  },
  "filter" : {
    "and" : [
      {
        "geo_distance" : {
          "distance" : "40km",
          "location" : {
            "lat" : 48.855736,
            "lon" : 2.32927300000006
          }
        }
      }
    ]
  },
  "sort" : [
    {
      "_score" : "desc"
    },
    #{
    #  "created_at" : "desc"   ==> i tried this but it doesnt change results
    #}
  ]
}
4

1 に答える 1

0

should ブロックに条件を追加してみてください。

i) 作成日が検索クエリの値に近づく必要がある場合、または日付がどれだけ近いかについて何か考えがある場合は、範囲クエリを指定します。ii) これらすべての値がわからない場合は、減衰関数を使用できます。この場合、クエリは関数クエリに変更されます。

 {
  "query" : {
    "bool" : {
      "must" : [
        {
          "range" : {
            "deadline" : {
              "gte" : "2016-05-30T11:39:10+02:00"
            }
          }
        },
        {
          "terms" : {
            "state" : [
              "open"
            ]
          }
        },
        {
          "query_string" : {
            "query" : "chant",
            "default_operator" : "AND",
            "analyzer" : "search_francais",
            "fields" : [
              "title^6",
              "description",
              "brand",
              "category_name"
            ]
          }
        }
      ],
      "should": [
        {"created_at" : "condition here .. "}
      ]
    }
  },
  "filter" : {
    "and" : [
      {
        "geo_distance" : {
          "distance" : "40km",
          "location" : {
            "lat" : 48.855736,
            "lon" : 2.32927300000006
          }
        }
      }
    ]
  }
}
于 2016-05-30T14:25:26.623 に答える