mirror of
https://github.com/typesense/typesense.git
synced 2025-05-20 05:32:30 +08:00
Return rank fusion score in response
This commit is contained in:
parent
b10508a876
commit
01f6885f55
@ -1824,11 +1824,15 @@ Option<nlohmann::json> Collection::search(std::string raw_query,
|
||||
if(field_order_kv->match_score_index == CURATED_RECORD_IDENTIFIER) {
|
||||
wrapper_doc["curated"] = true;
|
||||
} else if(field_order_kv->match_score_index >= 0) {
|
||||
wrapper_doc["text_match"] = field_order_kv->scores[field_order_kv->match_score_index];
|
||||
if(vector_query.field_name.empty()) {
|
||||
wrapper_doc["text_match"] = field_order_kv->scores[field_order_kv->match_score_index];
|
||||
|
||||
wrapper_doc["text_match_info"] = nlohmann::json::object();
|
||||
populate_text_match_info(wrapper_doc["text_match_info"],
|
||||
field_order_kv->scores[field_order_kv->match_score_index], match_type);
|
||||
wrapper_doc["text_match_info"] = nlohmann::json::object();
|
||||
populate_text_match_info(wrapper_doc["text_match_info"],
|
||||
field_order_kv->scores[field_order_kv->match_score_index], match_type);
|
||||
} else {
|
||||
wrapper_doc["rank_fusion_score"] = Index::int64_t_to_float(field_order_kv->scores[field_order_kv->match_score_index]);
|
||||
}
|
||||
}
|
||||
|
||||
nlohmann::json geo_distances;
|
||||
|
@ -4819,12 +4819,16 @@ TEST_F(CollectionTest, HybridSearchRankFusionTest) {
|
||||
ASSERT_EQ(3, search_res["hits"].size());
|
||||
// Hybrid search with rank fusion order:
|
||||
// 1. butter (1/1 * 0.7) + (1/1 * 0.3) = 1
|
||||
// 2. butterfly (1/2 * 0.7) + (1/3 * 0.3) = 0.567
|
||||
// 3. butterball (1/3 * 0.7) + (1/2 * 0.3) = 0.533
|
||||
// 2. butterfly (1/2 * 0.7) + (1/3 * 0.3) = 0.45
|
||||
// 3. butterball (1/3 * 0.7) + (1/2 * 0.3) = 0.383
|
||||
ASSERT_EQ("butter", search_res["hits"][0]["document"]["name"].get<std::string>());
|
||||
ASSERT_EQ("butterfly", search_res["hits"][1]["document"]["name"].get<std::string>());
|
||||
ASSERT_EQ("butterball", search_res["hits"][2]["document"]["name"].get<std::string>());
|
||||
|
||||
ASSERT_FLOAT_EQ((1.0/1.0 * 0.7) + (1.0/1.0 * 0.3), search_res["hits"][0]["rank_fusion_score"].get<float>());
|
||||
ASSERT_FLOAT_EQ((1.0/2.0 * 0.7) + (1.0/3.0 * 0.3), search_res["hits"][1]["rank_fusion_score"].get<float>());
|
||||
ASSERT_FLOAT_EQ((1.0/3.0 * 0.7) + (1.0/2.0 * 0.3), search_res["hits"][2]["rank_fusion_score"].get<float>());
|
||||
|
||||
// delete models folder
|
||||
system("rm -rf ./models");
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user