Add test for phrase search with stop words

Originally written by ManyTheFish here:
https://gist.github.com/ManyTheFish/f840e37cb2d2e029ce05396b4d540762

Co-authored-by: ManyTheFish <many@meilisearch.com>
This commit is contained in:
Samyak S Sarnayak 2022-10-13 19:13:40 +05:30
parent 62816dddde
commit 6a10b679ca
No known key found for this signature in database
GPG Key ID: 365873F2F0C6153B
2 changed files with 36 additions and 0 deletions

View File

@ -18,6 +18,7 @@ mod filters;
mod query_criteria; mod query_criteria;
mod sort; mod sort;
mod typo_tolerance; mod typo_tolerance;
mod phrase_search;
pub const TEST_QUERY: &'static str = "hello world america"; pub const TEST_QUERY: &'static str = "hello world america";

View File

@ -0,0 +1,35 @@
use milli::update::{IndexerConfig, Settings};
use milli::{Index, Search, TermsMatchingStrategy};
fn set_stop_words(index: &Index, stop_words: &[&str]) {
let mut wtxn = index.write_txn().unwrap();
let config = IndexerConfig::default();
let mut builder = Settings::new(&mut wtxn, &index, &config);
let stop_words = stop_words.into_iter().map(|s| s.to_string()).collect();
builder.set_stop_words(stop_words);
builder.execute(|_| ()).unwrap();
wtxn.commit().unwrap();
}
#[test]
fn test_phrase_search_with_stop_words() {
let criteria = [];
let index = super::setup_search_index_with_criteria(&criteria);
// Add stop_words
set_stop_words(&index, &["a", "an", "the", "of"]);
// Phrase search containing stop words
let txn = index.read_txn().unwrap();
let mut search = Search::new(&txn, &index);
search.query("\"the use of force\"");
search.limit(10);
search.authorize_typos(false);
search.terms_matching_strategy(TermsMatchingStrategy::All);
let result = search.execute().unwrap();
// 1 document should match
assert_eq!(result.documents_ids.len(), 1);
}