Hi ES group,

i have a function score query, which searches for user profiles in a big 
pool (~2 million documents). The query works fine, but the index contains a 
lot more male profiles than female ones (around 100 times more). Now my 
goal is to somehow specify a ratio of the gender distribution of the 
result. For example i want to get 6 male and 4 female profiles at any time 
I query the index. How could I force ES to ensure this ratio?

I tried a filter on the gender attribute inside the function score query 
with a boost_factor but it didn't worked out. The result contains about 9 
male and 1 female profile right now.

The query looks like the following (slightly stripped-down):

{
  "query": {
    "function_score": {
      "boost_mode": "replace",
      "score_mode": "sum",
      "boost": 1,
      "filter": {
      // some hard filter, this shouldn't matter
      },
      "functions": [
        {
          "random_score": {
            "seed": null
          }
        },
        {
          "boost_factor": 1,
          "field_value_factor": {
            "field": "gender",
              "gender": "female"
            
          }
        },
        {
          "linear": {
            "location": {
              "origin": "", //some origin here
              "scale": "50km",
              "offset": "25km",
              "decay": 0.25
            }
          }
        },
        {
          "linear": {
            "lastlogin": {
              "origin": "2014-10-14",
              "scale": "30d",
              "offset": "1d",
              "decay": 0.5
            }
          }
        }
      ]
    }
  },
  "from": 0,
  "size": 10
}

Best regards, 
Stefan

-- 
You received this message because you are subscribed to the Google Groups 
"elasticsearch" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to elasticsearch+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/elasticsearch/237fdee5-3c8f-471e-b8fd-ce53f6b086be%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to