From d48b5855e2896fb6c74653c6c4870734dbda022d Mon Sep 17 00:00:00 2001 From: virgilxie Date: Tue, 2 Dec 2014 17:03:39 -0800 Subject: [PATCH 1/3] Change long to float type for Weight --- src/Nest/DSL/Query/FunctionScoreQueryDescriptor.cs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/Nest/DSL/Query/FunctionScoreQueryDescriptor.cs b/src/Nest/DSL/Query/FunctionScoreQueryDescriptor.cs index 5f9e800bf52..1cb0fb86545 100644 --- a/src/Nest/DSL/Query/FunctionScoreQueryDescriptor.cs +++ b/src/Nest/DSL/Query/FunctionScoreQueryDescriptor.cs @@ -37,7 +37,7 @@ public interface IFunctionScoreQuery : IQuery IScriptFilter ScriptScore { get; set; } [JsonProperty(PropertyName = "weight")] - long? Weight { get; set; } + float? Weight { get; set; } } public class FunctionScoreQuery : PlainQuery, IFunctionScoreQuery @@ -55,7 +55,7 @@ protected override void WrapInContainer(IQueryContainer container) public float? MaxBoost { get; set; } public IRandomScoreFunction RandomScore { get; set; } public IScriptFilter ScriptScore { get; set; } - public long? Weight { get; set; } + public float? Weight { get; set; } } public class FunctionScoreQueryDescriptor : IFunctionScoreQuery where T : class @@ -74,7 +74,7 @@ public class FunctionScoreQueryDescriptor : IFunctionScoreQuery where T : cla IScriptFilter IFunctionScoreQuery.ScriptScore { get; set; } - long? IFunctionScoreQuery.Weight { get; set; } + float? IFunctionScoreQuery.Weight { get; set; } bool IQuery.IsConditionless { @@ -149,10 +149,10 @@ public FunctionScoreQueryDescriptor ScriptScore(Action Weight(long weight) + public FunctionScoreQueryDescriptor Weight(float weight) { ((IFunctionScoreQuery)this).Weight = weight; return this; } } -} \ No newline at end of file +} From b2a998e990ee1e842ff7e8b5d250488064c7e980 Mon Sep 17 00:00:00 2001 From: virgilxie Date: Tue, 2 Dec 2014 17:04:37 -0800 Subject: [PATCH 2/3] Change long to float type for Weight --- src/Nest/DSL/Query/Functions/IFunctionScoreFunction.cs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/Nest/DSL/Query/Functions/IFunctionScoreFunction.cs b/src/Nest/DSL/Query/Functions/IFunctionScoreFunction.cs index eaf460e3a25..96c3ba319d6 100644 --- a/src/Nest/DSL/Query/Functions/IFunctionScoreFunction.cs +++ b/src/Nest/DSL/Query/Functions/IFunctionScoreFunction.cs @@ -9,7 +9,7 @@ namespace Nest public interface IFunctionScoreFunction { FilterContainer Filter { get; set; } - long? Weight { get; set; } + float? Weight { get; set; } } [JsonObject(MemberSerialization = MemberSerialization.OptIn)] @@ -22,7 +22,7 @@ public class FunctionScoreFunction : IFunctionScoreFunction FilterContainer IFunctionScoreFunction.Filter { get; set; } [JsonProperty("weight")] - long? IFunctionScoreFunction.Weight { get; set; } + float? IFunctionScoreFunction.Weight { get; set; } public FunctionScoreFunction Filter(Func, FilterContainer> filterSelector) { @@ -34,10 +34,10 @@ public FunctionScoreFunction Filter(Func, FilterContainer return this; } - public FunctionScoreFunction Weight(long weight) + public FunctionScoreFunction Weight(float weight) { this.Self.Weight = weight; return this; } } -} \ No newline at end of file +} From 56c970f1c4a84ca8c312af06d4ce275e31ba866b Mon Sep 17 00:00:00 2001 From: virgilxie Date: Fri, 5 Dec 2014 16:04:32 -0800 Subject: [PATCH 3/3] Enable Functions to accept FunctionScoreFunction[] Enable Functions in FunctionScoreQueryDescriptor accept FunctionScoreFunction[] functions. So when you add multiple functions with different filters, you don't need to have FieldValueFactor for each of them. In the other words, I think we can only make the following query with this modification. Let me know if I was wrong. "query": { "function_score": { "filter": { "term": { "city": "Barcelona" } }, "functions": [ { "field_value_factor": { "field": "score_US" } }, { "filter": { "term": { "features": "wifi" }}, "weight": 1 }, { "filter": { "term": { "features": "garden" }}, "weight": 1 }, { "filter": { "term": { "features": "pool" }}, "weight": 2 } ], "score_mode": "sum", } } --- src/Nest/DSL/Query/FunctionScoreQueryDescriptor.cs | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/Nest/DSL/Query/FunctionScoreQueryDescriptor.cs b/src/Nest/DSL/Query/FunctionScoreQueryDescriptor.cs index 1cb0fb86545..a8c437cb30c 100644 --- a/src/Nest/DSL/Query/FunctionScoreQueryDescriptor.cs +++ b/src/Nest/DSL/Query/FunctionScoreQueryDescriptor.cs @@ -109,6 +109,13 @@ public FunctionScoreQueryDescriptor Functions(params Func Functions(FunctionScoreFunction[] functions) + { + ((IFunctionScoreQuery)this).Functions = functions; + + return this; + } public FunctionScoreQueryDescriptor ScoreMode(FunctionScoreMode mode) {