mirror of
https://github.com/typesense/typesense.git
synced 2025-05-19 13:12:22 +08:00
return parent as json object
This commit is contained in:
parent
045a39f2b5
commit
fe716f27b9
@ -404,7 +404,7 @@ public:
|
||||
bool facet_value_to_string(const facet &a_facet, const facet_count_t &facet_count, const nlohmann::json &document,
|
||||
std::string &value) const;
|
||||
|
||||
std::string get_facet_parent(const std::string& facet_field_name, const nlohmann::json& document) const;
|
||||
nlohmann::json get_facet_parent(const std::string& facet_field_name, const nlohmann::json& document) const;
|
||||
|
||||
static void populate_result_kvs(Topster *topster, std::vector<std::vector<KV *>> &result_kvs,
|
||||
const spp::sparse_hash_map<uint64_t, uint32_t>& groups_processed,
|
||||
|
@ -687,7 +687,7 @@ struct facet_value_t {
|
||||
std::string highlighted;
|
||||
uint32_t count;
|
||||
int64_t sort_field_val;
|
||||
std::string parent;
|
||||
nlohmann::json parent;
|
||||
};
|
||||
|
||||
struct facet_hash_values_t {
|
||||
|
@ -2335,8 +2335,8 @@ Option<nlohmann::json> Collection::search(std::string raw_query,
|
||||
for(size_t fi = 0; fi < max_facets; fi++) {
|
||||
// remap facet value hash with actual string
|
||||
auto & facet_count = facet_counts[fi];
|
||||
std::string value, parent;
|
||||
nlohmann::json document;
|
||||
std::string value;
|
||||
nlohmann::json document, parent;
|
||||
|
||||
if(should_fetch_doc_from_store) {
|
||||
const std::string &seq_id_key = get_seq_id_key((uint32_t) facet_count.doc_id);
|
||||
@ -3081,7 +3081,7 @@ bool Collection::facet_value_to_string(const facet &a_facet, const facet_count_t
|
||||
return true;
|
||||
}
|
||||
|
||||
std::string Collection::get_facet_parent(const std::string& facet_field_name, const nlohmann::json& document) const {
|
||||
nlohmann::json Collection::get_facet_parent(const std::string& facet_field_name, const nlohmann::json& document) const {
|
||||
std::vector<std::string> tokens;
|
||||
StringUtils::split(facet_field_name, tokens, ".");
|
||||
std::vector<nlohmann::json> level_docs;
|
||||
@ -3108,7 +3108,7 @@ std::string Collection::get_facet_parent(const std::string& facet_field_name, co
|
||||
if(!parent_found) {
|
||||
doc = level_docs[0]; //return the top most root
|
||||
}
|
||||
return doc.dump();
|
||||
return doc;
|
||||
}
|
||||
|
||||
bool Collection::is_nested_array(const nlohmann::json& obj, std::vector<std::string> path_parts, size_t part_i) const {
|
||||
|
@ -1777,9 +1777,9 @@ TEST_F(CollectionFacetingTest, FacetingReturnParent) {
|
||||
auto results = search_op.get();
|
||||
ASSERT_EQ(1, results["facet_counts"].size());
|
||||
ASSERT_EQ(2, results["facet_counts"][0]["counts"].size());
|
||||
ASSERT_EQ("{\"b\":0,\"color\":\"red\",\"g\":0,\"r\":255}", results["facet_counts"][0]["counts"][0]["parent"]);
|
||||
ASSERT_EQ("{\"b\":0,\"color\":\"red\",\"g\":0,\"r\":255}", results["facet_counts"][0]["counts"][0]["parent"].dump());
|
||||
ASSERT_EQ("red", results["facet_counts"][0]["counts"][0]["value"]);
|
||||
ASSERT_EQ("{\"b\":255,\"color\":\"blue\",\"g\":0,\"r\":0}", results["facet_counts"][0]["counts"][1]["parent"]);
|
||||
ASSERT_EQ("{\"b\":255,\"color\":\"blue\",\"g\":0,\"r\":0}", results["facet_counts"][0]["counts"][1]["parent"].dump());
|
||||
ASSERT_EQ("blue", results["facet_counts"][0]["counts"][1]["value"]);
|
||||
|
||||
//not passing facet_fields in facet_return_parent list will only return facet value, not immediate parent for those field
|
||||
@ -1835,9 +1835,9 @@ TEST_F(CollectionFacetingTest, FacetingReturnParent) {
|
||||
ASSERT_EQ("blue", results["facet_counts"][0]["counts"][1]["value"]);
|
||||
|
||||
ASSERT_EQ(2, results["facet_counts"][1]["counts"].size());
|
||||
ASSERT_EQ("{\"b\":255,\"color\":\"blue\",\"g\":0,\"r\":0}", results["facet_counts"][1]["counts"][0]["parent"]);
|
||||
ASSERT_EQ("{\"b\":255,\"color\":\"blue\",\"g\":0,\"r\":0}", results["facet_counts"][1]["counts"][0]["parent"].dump());
|
||||
ASSERT_EQ("0", results["facet_counts"][1]["counts"][0]["value"]);
|
||||
ASSERT_EQ("{\"b\":0,\"color\":\"red\",\"g\":0,\"r\":255}", results["facet_counts"][1]["counts"][1]["parent"]);
|
||||
ASSERT_EQ("{\"b\":0,\"color\":\"red\",\"g\":0,\"r\":255}", results["facet_counts"][1]["counts"][1]["parent"].dump());
|
||||
ASSERT_EQ("255", results["facet_counts"][1]["counts"][1]["value"]);
|
||||
}
|
||||
|
||||
@ -1901,9 +1901,9 @@ TEST_F(CollectionFacetingTest, FacetingReturnParentDeepNested) {
|
||||
auto results = search_op.get();
|
||||
ASSERT_EQ(1, results["facet_counts"].size());
|
||||
ASSERT_EQ(2, results["facet_counts"][0]["counts"].size());
|
||||
ASSERT_EQ("{\"specification\":{\"detail\":{\"width\":30}}}", results["facet_counts"][0]["counts"][0]["parent"]);
|
||||
ASSERT_EQ("{\"specification\":{\"detail\":{\"width\":30}}}", results["facet_counts"][0]["counts"][0]["parent"].dump());
|
||||
ASSERT_EQ("30", results["facet_counts"][0]["counts"][0]["value"]);
|
||||
ASSERT_EQ("{\"specification\":{\"detail\":{\"width\":25}}}", results["facet_counts"][0]["counts"][1]["parent"]);
|
||||
ASSERT_EQ("{\"specification\":{\"detail\":{\"width\":25}}}", results["facet_counts"][0]["counts"][1]["parent"].dump());
|
||||
ASSERT_EQ("25", results["facet_counts"][0]["counts"][1]["value"]);
|
||||
}
|
||||
|
||||
@ -1965,9 +1965,9 @@ TEST_F(CollectionFacetingTest, FacetingReturnParentObject) {
|
||||
auto results = search_op.get();
|
||||
ASSERT_EQ(1, results["facet_counts"].size());
|
||||
ASSERT_EQ(2, results["facet_counts"][0]["counts"].size());
|
||||
ASSERT_EQ("{\"b\":0,\"color\":\"red\",\"g\":0,\"r\":255}", results["facet_counts"][0]["counts"][0]["parent"]);
|
||||
ASSERT_EQ("{\"b\":0,\"color\":\"red\",\"g\":0,\"r\":255}", results["facet_counts"][0]["counts"][0]["parent"].dump());
|
||||
ASSERT_EQ("red", results["facet_counts"][0]["counts"][0]["value"]);
|
||||
ASSERT_EQ("{\"b\":255,\"color\":\"blue\",\"g\":0,\"r\":0}", results["facet_counts"][0]["counts"][1]["parent"]);
|
||||
ASSERT_EQ("{\"b\":255,\"color\":\"blue\",\"g\":0,\"r\":0}", results["facet_counts"][0]["counts"][1]["parent"].dump());
|
||||
ASSERT_EQ("blue", results["facet_counts"][0]["counts"][1]["value"]);
|
||||
}
|
||||
|
||||
|
@ -1503,9 +1503,9 @@ TEST_F(CollectionOptimizedFacetingTest, FacetingReturnParent) {
|
||||
auto results = search_op.get();
|
||||
ASSERT_EQ(1, results["facet_counts"].size());
|
||||
ASSERT_EQ(2, results["facet_counts"][0]["counts"].size());
|
||||
ASSERT_EQ("{\"b\":0,\"color\":\"red\",\"g\":0,\"r\":255}", results["facet_counts"][0]["counts"][0]["parent"]);
|
||||
ASSERT_EQ("{\"b\":0,\"color\":\"red\",\"g\":0,\"r\":255}", results["facet_counts"][0]["counts"][0]["parent"].dump());
|
||||
ASSERT_EQ("red", results["facet_counts"][0]["counts"][0]["value"]);
|
||||
ASSERT_EQ("{\"b\":255,\"color\":\"blue\",\"g\":0,\"r\":0}", results["facet_counts"][0]["counts"][1]["parent"]);
|
||||
ASSERT_EQ("{\"b\":255,\"color\":\"blue\",\"g\":0,\"r\":0}", results["facet_counts"][0]["counts"][1]["parent"].dump());
|
||||
ASSERT_EQ("blue", results["facet_counts"][0]["counts"][1]["value"]);
|
||||
|
||||
//not passing facet_fields in facet_return_parent list will only return facet value, not immediate parent for those field
|
||||
@ -1561,9 +1561,9 @@ TEST_F(CollectionOptimizedFacetingTest, FacetingReturnParent) {
|
||||
ASSERT_EQ("blue", results["facet_counts"][0]["counts"][1]["value"]);
|
||||
|
||||
ASSERT_EQ(2, results["facet_counts"][1]["counts"].size());
|
||||
ASSERT_EQ("{\"b\":255,\"color\":\"blue\",\"g\":0,\"r\":0}", results["facet_counts"][1]["counts"][0]["parent"]);
|
||||
ASSERT_EQ("{\"b\":255,\"color\":\"blue\",\"g\":0,\"r\":0}", results["facet_counts"][1]["counts"][0]["parent"].dump());
|
||||
ASSERT_EQ("0", results["facet_counts"][1]["counts"][0]["value"]);
|
||||
ASSERT_EQ("{\"b\":0,\"color\":\"red\",\"g\":0,\"r\":255}", results["facet_counts"][1]["counts"][1]["parent"]);
|
||||
ASSERT_EQ("{\"b\":0,\"color\":\"red\",\"g\":0,\"r\":255}", results["facet_counts"][1]["counts"][1]["parent"].dump());
|
||||
ASSERT_EQ("255", results["facet_counts"][1]["counts"][1]["value"]);
|
||||
}
|
||||
|
||||
@ -1627,9 +1627,9 @@ TEST_F(CollectionOptimizedFacetingTest, FacetingReturnParentDeepNested) {
|
||||
auto results = search_op.get();
|
||||
ASSERT_EQ(1, results["facet_counts"].size());
|
||||
ASSERT_EQ(2, results["facet_counts"][0]["counts"].size());
|
||||
ASSERT_EQ("{\"specification\":{\"detail\":{\"width\":30}}}", results["facet_counts"][0]["counts"][0]["parent"]);
|
||||
ASSERT_EQ("{\"specification\":{\"detail\":{\"width\":30}}}", results["facet_counts"][0]["counts"][0]["parent"].dump());
|
||||
ASSERT_EQ("30", results["facet_counts"][0]["counts"][0]["value"]);
|
||||
ASSERT_EQ("{\"specification\":{\"detail\":{\"width\":25}}}", results["facet_counts"][0]["counts"][1]["parent"]);
|
||||
ASSERT_EQ("{\"specification\":{\"detail\":{\"width\":25}}}", results["facet_counts"][0]["counts"][1]["parent"].dump());
|
||||
ASSERT_EQ("25", results["facet_counts"][0]["counts"][1]["value"]);
|
||||
}
|
||||
|
||||
@ -1691,9 +1691,9 @@ TEST_F(CollectionOptimizedFacetingTest, FacetingReturnParentObject) {
|
||||
auto results = search_op.get();
|
||||
ASSERT_EQ(1, results["facet_counts"].size());
|
||||
ASSERT_EQ(2, results["facet_counts"][0]["counts"].size());
|
||||
ASSERT_EQ("{\"b\":0,\"color\":\"red\",\"g\":0,\"r\":255}", results["facet_counts"][0]["counts"][0]["parent"]);
|
||||
ASSERT_EQ("{\"b\":0,\"color\":\"red\",\"g\":0,\"r\":255}", results["facet_counts"][0]["counts"][0]["parent"].dump());
|
||||
ASSERT_EQ("red", results["facet_counts"][0]["counts"][0]["value"]);
|
||||
ASSERT_EQ("{\"b\":255,\"color\":\"blue\",\"g\":0,\"r\":0}", results["facet_counts"][0]["counts"][1]["parent"]);
|
||||
ASSERT_EQ("{\"b\":255,\"color\":\"blue\",\"g\":0,\"r\":0}", results["facet_counts"][0]["counts"][1]["parent"].dump());
|
||||
ASSERT_EQ("blue", results["facet_counts"][0]["counts"][1]["value"]);
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user