From d8cfac914af66ba516c6175cbaef666a4dcdfc30 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Renault?= Date: Mon, 10 Dec 2018 12:16:24 +0100 Subject: [PATCH] feat: Implement a better automaton builder This new implementation only allows the last word of a query string to be a prefix. --- src/rank/query_builder.rs | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/rank/query_builder.rs b/src/rank/query_builder.rs index 2d9795a55..5d6483d2e 100644 --- a/src/rank/query_builder.rs +++ b/src/rank/query_builder.rs @@ -17,8 +17,12 @@ use crate::rank::Document; fn split_whitespace_automatons(query: &str) -> Vec { let mut automatons = Vec::new(); - for query in query.split_whitespace().map(str::to_lowercase) { - let lev = automaton::build_prefix_dfa(&query); + let mut words = query.split_whitespace().map(str::to_lowercase).peekable(); + while let Some(word) = words.next() { + let lev = match words.peek() { + Some(_) => automaton::build_dfa(&word), + None => automaton::build_prefix_dfa(&word), + }; automatons.push(lev); } automatons