You are looking at preliminary documentation for a future release.
Not what you want? See the
current release documentation.
Function Score Query Usageedit
Fluent DSL Exampleedit
q
.FunctionScore(c => c
.Name("named_query")
.Boost(1.1)
.Query(qq => qq.MatchAll())
.BoostMode(FunctionBoostMode.Multiply)
.ScoreMode(FunctionScoreMode.Sum)
.MaxBoost(20.0)
.MinScore(1.0)
.Functions(f => f
.Exponential(b => b.Field(p => p.NumberOfCommits).Decay(0.5).Origin(1.0).Scale(0.1).Weight(2.1))
.GaussDate(b => b.Field(p => p.LastActivity).Origin(DateMath.Now).Decay(0.5).Scale("1d"))
.LinearGeoLocation(b => b.Field(p => p.Location).Origin(new GeoLocation(70, -70)).Scale(Distance.Miles(1)).MultiValueMode(MultiValueMode.Average))
.FieldValueFactor(b => b.Field("x").Factor(1.1).Missing(0.1).Modifier(FieldValueFactorModifier.Ln))
.RandomScore(1337)
.RandomScore("randomstring")
.Weight(1.0)
.ScriptScore(ss => ss.Script(s => s.File("x")))
)
)Object Initializer Syntax Exampleedit
new FunctionScoreQuery()
{
Name = "named_query",
Boost = 1.1,
Query = new MatchAllQuery { },
BoostMode = FunctionBoostMode.Multiply,
ScoreMode = FunctionScoreMode.Sum,
MaxBoost = 20.0,
MinScore = 1.0,
Functions = new List<IScoreFunction>
{
new ExponentialDecayFunction { Origin = 1.0, Decay = 0.5, Field = Field<Project>(p=>p.NumberOfCommits), Scale = 0.1, Weight = 2.1 },
new GaussDateDecayFunction { Origin = DateMath.Now, Field = Field<Project>(p=>p.LastActivity), Decay = 0.5, Scale = TimeSpan.FromDays(1) },
new LinearGeoDecayFunction { Origin = new GeoLocation(70, -70), Field = Field<Project>(p=>p.Location), Scale = Distance.Miles(1), MultiValueMode = MultiValueMode.Average },
new FieldValueFactorFunction
{
Field = "x", Factor = 1.1, Missing = 0.1, Modifier = FieldValueFactorModifier.Ln
},
new RandomScoreFunction { Seed = 1337 },
new RandomScoreFunction { Seed = "randomstring" },
new WeightFunction { Weight = 1.0},
new ScriptScoreFunction { Script = new ScriptQuery { File = "x" } }
}
}Example json output.
{
"function_score": {
"_name": "named_query",
"boost": 1.1,
"boost_mode": "multiply",
"functions": [
{
"exp": {
"numberOfCommits": {
"origin": 1.0,
"scale": 0.1,
"decay": 0.5
}
},
"weight": 2.1
},
{
"gauss": {
"lastActivity": {
"origin": "now",
"scale": "1d",
"decay": 0.5
}
}
},
{
"linear": {
"location": {
"origin": {
"lat": 70.0,
"lon": -70.0
},
"scale": "1.0mi"
},
"multi_value_mode": "avg"
}
},
{
"field_value_factor": {
"field": "x",
"factor": 1.1,
"missing": 0.1,
"modifier": "ln"
}
},
{
"random_score": {
"seed": 1337
}
},
{
"random_score": {
"seed": "randomstring"
}
},
{
"weight": 1.0
},
{
"script_score": {
"script": {
"file": "x"
}
}
}
],
"max_boost": 20.0,
"min_score": 1.0,
"query": {
"match_all": {}
},
"score_mode": "sum"
}
}