mirror of
				https://github.com/meilisearch/meilisearch.git
				synced 2025-10-30 23:46:28 +00:00 
			
		
		
		
	Change how the cost of removing words is computed
This commit is contained in:
		| @@ -139,13 +139,12 @@ impl<'ctx, G: RankingRuleGraphTrait> RankingRule<'ctx, QueryGraph> for GraphBase | ||||
|                     let mut forbidden_nodes = | ||||
|                         SmallBitmap::for_interned_values_in(&query_graph.nodes); | ||||
|                     let mut costs = query_graph.nodes.map(|_| None); | ||||
|                     let mut cost = 100; | ||||
|                     // FIXME: this works because only words uses termsmatchingstrategy at the moment. | ||||
|                     for ns in removal_order { | ||||
|                         for n in ns.iter() { | ||||
|                             *costs.get_mut(n) = Some((cost, forbidden_nodes.clone())); | ||||
|                             *costs.get_mut(n) = Some((1, forbidden_nodes.clone())); | ||||
|                         } | ||||
|                         forbidden_nodes.union(&ns); | ||||
|                         cost += 100; | ||||
|                     } | ||||
|                     costs | ||||
|                 } | ||||
|   | ||||
| @@ -49,10 +49,15 @@ impl<G: RankingRuleGraphTrait> RankingRuleGraph<G> { | ||||
|                 if let Some((cost_of_ignoring, forbidden_nodes)) = | ||||
|                     cost_of_ignoring_node.get(dest_idx) | ||||
|                 { | ||||
|                     let dest = graph_nodes.get(dest_idx); | ||||
|                     let dest_size = match &dest.data { | ||||
|                         QueryNodeData::Term(term) => term.term_ids.len(), | ||||
|                         _ => panic!(), | ||||
|                     }; | ||||
|                     let new_edge_id = edges_store.insert(Some(Edge { | ||||
|                         source_node: source_id, | ||||
|                         dest_node: dest_idx, | ||||
|                         cost: *cost_of_ignoring, | ||||
|                         cost: *cost_of_ignoring * dest_size as u32, | ||||
|                         condition: None, | ||||
|                         nodes_to_skip: forbidden_nodes.clone(), | ||||
|                     })); | ||||
|   | ||||
| @@ -41,9 +41,6 @@ impl RankingRuleGraphTrait for WordsGraph { | ||||
|         _from: Option<&LocatedQueryTermSubset>, | ||||
|         to_term: &LocatedQueryTermSubset, | ||||
|     ) -> Result<Vec<(u32, Interned<Self::Condition>)>> { | ||||
|         Ok(vec![( | ||||
|             to_term.term_ids.len() as u32, | ||||
|             conditions_interner.insert(WordsCondition { term: to_term.clone() }), | ||||
|         )]) | ||||
|         Ok(vec![(0, conditions_interner.insert(WordsCondition { term: to_term.clone() }))]) | ||||
|     } | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user