mirror of
				https://github.com/meilisearch/meilisearch.git
				synced 2025-10-31 07:56:28 +00:00 
			
		
		
		
	Add rank_to_score for graph based ranking rules
This commit is contained in:
		| @@ -1,6 +1,7 @@ | ||||
| use roaring::RoaringBitmap; | ||||
|  | ||||
| use super::{ComputedCondition, RankingRuleGraphTrait}; | ||||
| use crate::score_details::{Rank, ScoreDetails}; | ||||
| use crate::search::new::interner::{DedupInterner, Interned}; | ||||
| use crate::search::new::query_term::{ExactTerm, LocatedQueryTermSubset}; | ||||
| use crate::search::new::resolve_query_graph::compute_query_term_subset_docids; | ||||
| @@ -84,4 +85,8 @@ impl RankingRuleGraphTrait for ExactnessGraph { | ||||
|  | ||||
|         Ok(vec![(0, exact_condition), (dest_node.term_ids.len() as u32, skip_condition)]) | ||||
|     } | ||||
|  | ||||
|     fn rank_to_score(rank: Rank) -> ScoreDetails { | ||||
|         ScoreDetails::Exactness(rank) | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -2,6 +2,7 @@ use fxhash::FxHashSet; | ||||
| use roaring::RoaringBitmap; | ||||
|  | ||||
| use super::{ComputedCondition, RankingRuleGraphTrait}; | ||||
| use crate::score_details::{Rank, ScoreDetails}; | ||||
| use crate::search::new::interner::{DedupInterner, Interned}; | ||||
| use crate::search::new::query_term::LocatedQueryTermSubset; | ||||
| use crate::search::new::resolve_query_graph::compute_query_term_subset_docids_within_field_id; | ||||
| @@ -102,4 +103,8 @@ impl RankingRuleGraphTrait for FidGraph { | ||||
|  | ||||
|         Ok(edges) | ||||
|     } | ||||
|  | ||||
|     fn rank_to_score(rank: Rank) -> ScoreDetails { | ||||
|         ScoreDetails::Fid(rank) | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -41,6 +41,7 @@ use super::interner::{DedupInterner, FixedSizeInterner, Interned, MappedInterner | ||||
| use super::query_term::LocatedQueryTermSubset; | ||||
| use super::small_bitmap::SmallBitmap; | ||||
| use super::{QueryGraph, QueryNode, SearchContext}; | ||||
| use crate::score_details::{Rank, ScoreDetails}; | ||||
| use crate::Result; | ||||
|  | ||||
| pub struct ComputedCondition { | ||||
| @@ -110,6 +111,9 @@ pub trait RankingRuleGraphTrait: Sized + 'static { | ||||
|         source_node: Option<&LocatedQueryTermSubset>, | ||||
|         dest_node: &LocatedQueryTermSubset, | ||||
|     ) -> Result<Vec<(u32, Interned<Self::Condition>)>>; | ||||
|  | ||||
|     /// Convert the rank of a path to its corresponding score for the ranking rule | ||||
|     fn rank_to_score(rank: Rank) -> ScoreDetails; | ||||
| } | ||||
|  | ||||
| /// The graph used by graph-based ranking rules. | ||||
|   | ||||
| @@ -2,6 +2,7 @@ use fxhash::{FxHashMap, FxHashSet}; | ||||
| use roaring::RoaringBitmap; | ||||
|  | ||||
| use super::{ComputedCondition, RankingRuleGraphTrait}; | ||||
| use crate::score_details::{Rank, ScoreDetails}; | ||||
| use crate::search::new::interner::{DedupInterner, Interned}; | ||||
| use crate::search::new::query_term::LocatedQueryTermSubset; | ||||
| use crate::search::new::resolve_query_graph::compute_query_term_subset_docids_within_position; | ||||
| @@ -115,6 +116,10 @@ impl RankingRuleGraphTrait for PositionGraph { | ||||
|  | ||||
|         Ok(edges) | ||||
|     } | ||||
|  | ||||
|     fn rank_to_score(rank: Rank) -> ScoreDetails { | ||||
|         ScoreDetails::Position(rank) | ||||
|     } | ||||
| } | ||||
|  | ||||
| fn cost_from_distance(distance: u32) -> u32 { | ||||
|   | ||||
| @@ -4,6 +4,7 @@ pub mod compute_docids; | ||||
| use roaring::RoaringBitmap; | ||||
|  | ||||
| use super::{ComputedCondition, RankingRuleGraphTrait}; | ||||
| use crate::score_details::{Rank, ScoreDetails}; | ||||
| use crate::search::new::interner::{DedupInterner, Interned}; | ||||
| use crate::search::new::query_term::LocatedQueryTermSubset; | ||||
| use crate::search::new::SearchContext; | ||||
| @@ -36,4 +37,8 @@ impl RankingRuleGraphTrait for ProximityGraph { | ||||
|     ) -> Result<Vec<(u32, Interned<Self::Condition>)>> { | ||||
|         build::build_edges(ctx, conditions_interner, source_term, dest_term) | ||||
|     } | ||||
|  | ||||
|     fn rank_to_score(rank: Rank) -> ScoreDetails { | ||||
|         ScoreDetails::Proximity(rank) | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -1,6 +1,7 @@ | ||||
| use roaring::RoaringBitmap; | ||||
|  | ||||
| use super::{ComputedCondition, RankingRuleGraphTrait}; | ||||
| use crate::score_details::{self, Rank, ScoreDetails}; | ||||
| use crate::search::new::interner::{DedupInterner, Interned}; | ||||
| use crate::search::new::query_term::LocatedQueryTermSubset; | ||||
| use crate::search::new::resolve_query_graph::compute_query_term_subset_docids; | ||||
| @@ -75,4 +76,8 @@ impl RankingRuleGraphTrait for TypoGraph { | ||||
|         } | ||||
|         Ok(edges) | ||||
|     } | ||||
|  | ||||
|     fn rank_to_score(rank: Rank) -> ScoreDetails { | ||||
|         ScoreDetails::Typo(score_details::Typo::from_rank(rank)) | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -1,6 +1,7 @@ | ||||
| use roaring::RoaringBitmap; | ||||
|  | ||||
| use super::{ComputedCondition, RankingRuleGraphTrait}; | ||||
| use crate::score_details::{self, Rank, ScoreDetails}; | ||||
| use crate::search::new::interner::{DedupInterner, Interned}; | ||||
| use crate::search::new::query_term::LocatedQueryTermSubset; | ||||
| use crate::search::new::resolve_query_graph::compute_query_term_subset_docids; | ||||
| @@ -43,4 +44,8 @@ impl RankingRuleGraphTrait for WordsGraph { | ||||
|     ) -> Result<Vec<(u32, Interned<Self::Condition>)>> { | ||||
|         Ok(vec![(0, conditions_interner.insert(WordsCondition { term: to_term.clone() }))]) | ||||
|     } | ||||
|  | ||||
|     fn rank_to_score(rank: Rank) -> ScoreDetails { | ||||
|         ScoreDetails::Words(score_details::Words::from_rank(rank)) | ||||
|     } | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user