mirror of
https://github.com/meilisearch/meilisearch.git
synced 2024-11-23 02:27:40 +08:00
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:
parent
62816dddde
commit
6a10b679ca
@ -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";
|
||||||
|
|
||||||
|
35
milli/tests/search/phrase_search.rs
Normal file
35
milli/tests/search/phrase_search.rs
Normal 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);
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user