NOTE: You are looking at documentation for an older release. For the latest information, see the current release documentation.
Function Score Query Usage
editFunction Score Query Usage
editFluent DSL example
editq .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.LocationPoint).Origin(new GeoLocation(70, -70)).Scale(Distance.Miles(1)).MultiValueMode(MultiValueMode.Average)) .FieldValueFactor(b => b.Field(p => p.NumberOfContributors).Factor(1.1).Missing(0.1).Modifier(FieldValueFactorModifier.Square)) .RandomScore(r => r.Seed(1337).Field("_seq_no")) .RandomScore(r => r.Seed("randomstring").Field("_seq_no")) .Weight(1.0) .ScriptScore(s => s.Script(ss => ss.Source("Math.log(2 + doc['numberOfCommits'].value)"))) ) )
Object Initializer syntax example
editnew 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.LocationPoint), Scale = Distance.Miles(1), MultiValueMode = MultiValueMode.Average }, new FieldValueFactorFunction { Field = Field<Project>(p => p.NumberOfContributors), Factor = 1.1, Missing = 0.1, Modifier = FieldValueFactorModifier.Square }, new RandomScoreFunction { Seed = 1337, Field = "_seq_no" }, new RandomScoreFunction { Seed = "randomstring", Field = "_seq_no" }, new WeightFunction { Weight = 1.0 }, new ScriptScoreFunction { Script = new ScriptQuery{ Source = "Math.log(2 + doc['numberOfCommits'].value)" } } } }
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": { "locationPoint": { "origin": { "lat": 70.0, "lon": -70.0 }, "scale": "1.0mi" }, "multi_value_mode": "avg" } }, { "field_value_factor": { "field": "numberOfContributors", "factor": 1.1, "missing": 0.1, "modifier": "square" } }, { "random_score": { "seed": 1337, "field": "_seq_no" } }, { "random_score": { "seed": "randomstring", "field": "_seq_no" } }, { "weight": 1.0 }, { "script_score": { "script": { "source": "Math.log(2 + doc['numberOfCommits'].value)" } } } ], "max_boost": 20.0, "min_score": 1.0, "query": { "match_all": {} }, "score_mode": "sum" } }