diff --git a/src/override.cpp b/src/override.cpp index aba4f8d1..efe0002b 100644 --- a/src/override.cpp +++ b/src/override.cpp @@ -195,8 +195,15 @@ Option override_t::parse(const nlohmann::json& override_json, const std::s nlohmann::json override_t::to_json() const { nlohmann::json override; override["id"] = id; - override["rule"]["query"] = rule.query; - override["rule"]["match"] = rule.match; + + if(!rule.query.empty()) { + override["rule"]["query"] = rule.query; + } + + if(!rule.match.empty()) { + override["rule"]["match"] = rule.match; + } + if(!rule.filter_by.empty()) { override["rule"]["filter_by"] = rule.filter_by; } diff --git a/test/collection_override_test.cpp b/test/collection_override_test.cpp index 9d29806e..0c8955ce 100644 --- a/test/collection_override_test.cpp +++ b/test/collection_override_test.cpp @@ -1002,6 +1002,11 @@ TEST_F(CollectionOverrideTest, FilterRule) { ASSERT_EQ(2, results["hits"].size()); ASSERT_EQ("0", results["hits"][0]["document"]["id"].get()); ASSERT_EQ("2", results["hits"][1]["document"]["id"].get()); + + override_json_ser = override_rule2.to_json(); + ASSERT_EQ("points: 1", override_json_ser["rule"]["filter_by"]); + ASSERT_EQ(0, override_json_ser["rule"].count("query")); + ASSERT_EQ(0, override_json_ser["rule"].count("match")); } TEST_F(CollectionOverrideTest, PinnedAndHiddenHits) {