mirror of
https://github.com/meilisearch/meilisearch.git
synced 2024-11-30 00:55:00 +08:00
Change how the cost of removing words is computed
This commit is contained in:
parent
701d299369
commit
becf1f066a
@ -139,13 +139,12 @@ impl<'ctx, G: RankingRuleGraphTrait> RankingRule<'ctx, QueryGraph> for GraphBase
|
|||||||
let mut forbidden_nodes =
|
let mut forbidden_nodes =
|
||||||
SmallBitmap::for_interned_values_in(&query_graph.nodes);
|
SmallBitmap::for_interned_values_in(&query_graph.nodes);
|
||||||
let mut costs = query_graph.nodes.map(|_| None);
|
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 ns in removal_order {
|
||||||
for n in ns.iter() {
|
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);
|
forbidden_nodes.union(&ns);
|
||||||
cost += 100;
|
|
||||||
}
|
}
|
||||||
costs
|
costs
|
||||||
}
|
}
|
||||||
|
@ -49,10 +49,15 @@ impl<G: RankingRuleGraphTrait> RankingRuleGraph<G> {
|
|||||||
if let Some((cost_of_ignoring, forbidden_nodes)) =
|
if let Some((cost_of_ignoring, forbidden_nodes)) =
|
||||||
cost_of_ignoring_node.get(dest_idx)
|
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 {
|
let new_edge_id = edges_store.insert(Some(Edge {
|
||||||
source_node: source_id,
|
source_node: source_id,
|
||||||
dest_node: dest_idx,
|
dest_node: dest_idx,
|
||||||
cost: *cost_of_ignoring,
|
cost: *cost_of_ignoring * dest_size as u32,
|
||||||
condition: None,
|
condition: None,
|
||||||
nodes_to_skip: forbidden_nodes.clone(),
|
nodes_to_skip: forbidden_nodes.clone(),
|
||||||
}));
|
}));
|
||||||
|
@ -41,9 +41,6 @@ impl RankingRuleGraphTrait for WordsGraph {
|
|||||||
_from: Option<&LocatedQueryTermSubset>,
|
_from: Option<&LocatedQueryTermSubset>,
|
||||||
to_term: &LocatedQueryTermSubset,
|
to_term: &LocatedQueryTermSubset,
|
||||||
) -> Result<Vec<(u32, Interned<Self::Condition>)>> {
|
) -> Result<Vec<(u32, Interned<Self::Condition>)>> {
|
||||||
Ok(vec![(
|
Ok(vec![(0, conditions_interner.insert(WordsCondition { term: to_term.clone() }))])
|
||||||
to_term.term_ids.len() as u32,
|
|
||||||
conditions_interner.insert(WordsCondition { term: to_term.clone() }),
|
|
||||||
)])
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user