WARNING: Version 5.x has passed its EOL date.
This documentation is no longer being maintained and may be removed. If you are running this version, we strongly advise you to upgrade. For the latest information, 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" } }