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 roaring::RoaringBitmap; | ||||||
|  |  | ||||||
| use super::{ComputedCondition, RankingRuleGraphTrait}; | use super::{ComputedCondition, RankingRuleGraphTrait}; | ||||||
|  | use crate::score_details::{Rank, ScoreDetails}; | ||||||
| use crate::search::new::interner::{DedupInterner, Interned}; | use crate::search::new::interner::{DedupInterner, Interned}; | ||||||
| use crate::search::new::query_term::{ExactTerm, LocatedQueryTermSubset}; | use crate::search::new::query_term::{ExactTerm, LocatedQueryTermSubset}; | ||||||
| use crate::search::new::resolve_query_graph::compute_query_term_subset_docids; | 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)]) |         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 roaring::RoaringBitmap; | ||||||
|  |  | ||||||
| use super::{ComputedCondition, RankingRuleGraphTrait}; | use super::{ComputedCondition, RankingRuleGraphTrait}; | ||||||
|  | use crate::score_details::{Rank, ScoreDetails}; | ||||||
| use crate::search::new::interner::{DedupInterner, Interned}; | use crate::search::new::interner::{DedupInterner, Interned}; | ||||||
| use crate::search::new::query_term::LocatedQueryTermSubset; | use crate::search::new::query_term::LocatedQueryTermSubset; | ||||||
| use crate::search::new::resolve_query_graph::compute_query_term_subset_docids_within_field_id; | 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) |         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::query_term::LocatedQueryTermSubset; | ||||||
| use super::small_bitmap::SmallBitmap; | use super::small_bitmap::SmallBitmap; | ||||||
| use super::{QueryGraph, QueryNode, SearchContext}; | use super::{QueryGraph, QueryNode, SearchContext}; | ||||||
|  | use crate::score_details::{Rank, ScoreDetails}; | ||||||
| use crate::Result; | use crate::Result; | ||||||
|  |  | ||||||
| pub struct ComputedCondition { | pub struct ComputedCondition { | ||||||
| @@ -110,6 +111,9 @@ pub trait RankingRuleGraphTrait: Sized + 'static { | |||||||
|         source_node: Option<&LocatedQueryTermSubset>, |         source_node: Option<&LocatedQueryTermSubset>, | ||||||
|         dest_node: &LocatedQueryTermSubset, |         dest_node: &LocatedQueryTermSubset, | ||||||
|     ) -> Result<Vec<(u32, Interned<Self::Condition>)>>; |     ) -> 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. | /// The graph used by graph-based ranking rules. | ||||||
|   | |||||||
| @@ -2,6 +2,7 @@ use fxhash::{FxHashMap, FxHashSet}; | |||||||
| use roaring::RoaringBitmap; | use roaring::RoaringBitmap; | ||||||
|  |  | ||||||
| use super::{ComputedCondition, RankingRuleGraphTrait}; | use super::{ComputedCondition, RankingRuleGraphTrait}; | ||||||
|  | use crate::score_details::{Rank, ScoreDetails}; | ||||||
| use crate::search::new::interner::{DedupInterner, Interned}; | use crate::search::new::interner::{DedupInterner, Interned}; | ||||||
| use crate::search::new::query_term::LocatedQueryTermSubset; | use crate::search::new::query_term::LocatedQueryTermSubset; | ||||||
| use crate::search::new::resolve_query_graph::compute_query_term_subset_docids_within_position; | use crate::search::new::resolve_query_graph::compute_query_term_subset_docids_within_position; | ||||||
| @@ -115,6 +116,10 @@ impl RankingRuleGraphTrait for PositionGraph { | |||||||
|  |  | ||||||
|         Ok(edges) |         Ok(edges) | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     fn rank_to_score(rank: Rank) -> ScoreDetails { | ||||||
|  |         ScoreDetails::Position(rank) | ||||||
|  |     } | ||||||
| } | } | ||||||
|  |  | ||||||
| fn cost_from_distance(distance: u32) -> u32 { | fn cost_from_distance(distance: u32) -> u32 { | ||||||
|   | |||||||
| @@ -4,6 +4,7 @@ pub mod compute_docids; | |||||||
| use roaring::RoaringBitmap; | use roaring::RoaringBitmap; | ||||||
|  |  | ||||||
| use super::{ComputedCondition, RankingRuleGraphTrait}; | use super::{ComputedCondition, RankingRuleGraphTrait}; | ||||||
|  | use crate::score_details::{Rank, ScoreDetails}; | ||||||
| use crate::search::new::interner::{DedupInterner, Interned}; | use crate::search::new::interner::{DedupInterner, Interned}; | ||||||
| use crate::search::new::query_term::LocatedQueryTermSubset; | use crate::search::new::query_term::LocatedQueryTermSubset; | ||||||
| use crate::search::new::SearchContext; | use crate::search::new::SearchContext; | ||||||
| @@ -36,4 +37,8 @@ impl RankingRuleGraphTrait for ProximityGraph { | |||||||
|     ) -> Result<Vec<(u32, Interned<Self::Condition>)>> { |     ) -> Result<Vec<(u32, Interned<Self::Condition>)>> { | ||||||
|         build::build_edges(ctx, conditions_interner, source_term, dest_term) |         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 roaring::RoaringBitmap; | ||||||
|  |  | ||||||
| use super::{ComputedCondition, RankingRuleGraphTrait}; | use super::{ComputedCondition, RankingRuleGraphTrait}; | ||||||
|  | use crate::score_details::{self, Rank, ScoreDetails}; | ||||||
| use crate::search::new::interner::{DedupInterner, Interned}; | use crate::search::new::interner::{DedupInterner, Interned}; | ||||||
| use crate::search::new::query_term::LocatedQueryTermSubset; | use crate::search::new::query_term::LocatedQueryTermSubset; | ||||||
| use crate::search::new::resolve_query_graph::compute_query_term_subset_docids; | use crate::search::new::resolve_query_graph::compute_query_term_subset_docids; | ||||||
| @@ -75,4 +76,8 @@ impl RankingRuleGraphTrait for TypoGraph { | |||||||
|         } |         } | ||||||
|         Ok(edges) |         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 roaring::RoaringBitmap; | ||||||
|  |  | ||||||
| use super::{ComputedCondition, RankingRuleGraphTrait}; | use super::{ComputedCondition, RankingRuleGraphTrait}; | ||||||
|  | use crate::score_details::{self, Rank, ScoreDetails}; | ||||||
| use crate::search::new::interner::{DedupInterner, Interned}; | use crate::search::new::interner::{DedupInterner, Interned}; | ||||||
| use crate::search::new::query_term::LocatedQueryTermSubset; | use crate::search::new::query_term::LocatedQueryTermSubset; | ||||||
| use crate::search::new::resolve_query_graph::compute_query_term_subset_docids; | 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>)>> { |     ) -> Result<Vec<(u32, Interned<Self::Condition>)>> { | ||||||
|         Ok(vec![(0, conditions_interner.insert(WordsCondition { term: to_term.clone() }))]) |         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