From f7796edc7e6a814680b658701ac6331aee85cf42 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E7=80=9A=E9=AA=8B?= Date: Tue, 28 Sep 2021 17:23:49 +0800 Subject: [PATCH] remove everything about pest --- milli/Cargo.toml | 4 +--- milli/src/error.rs | 12 +++++++----- milli/src/lib.rs | 3 --- milli/src/search/facet/filter_condition.rs | 3 +-- milli/src/search/facet/mod.rs | 2 -- milli/src/search/facet/parser.rs | 12 ------------ milli/src/search/mod.rs | 1 - 7 files changed, 9 insertions(+), 28 deletions(-) delete mode 100644 milli/src/search/facet/parser.rs diff --git a/milli/Cargo.toml b/milli/Cargo.toml index 50ada6bfb..007d9d415 100644 --- a/milli/Cargo.toml +++ b/milli/Cargo.toml @@ -24,7 +24,6 @@ levenshtein_automata = { version = "0.2.0", features = ["fst_automaton"] } linked-hash-map = "0.5.4" meilisearch-tokenizer = { git = "https://github.com/meilisearch/tokenizer.git", tag = "v0.2.5" } memmap = "0.7.0" -nom = "7" obkv = "0.2.0" once_cell = "1.5.2" ordered-float = "2.1.1" @@ -40,8 +39,7 @@ tempfile = "3.2.0" uuid = { version = "0.8.2", features = ["v4"] } # facet filter parser -pest = { git = "https://github.com/pest-parser/pest.git", rev = "51fd1d49f1041f7839975664ef71fe15c7dcaf67" } -pest_derive = "2.1.0" +nom = "7" # documents words self-join itertools = "0.10.0" diff --git a/milli/src/error.rs b/milli/src/error.rs index a798539cd..b80238468 100644 --- a/milli/src/error.rs +++ b/milli/src/error.rs @@ -7,7 +7,6 @@ use heed::{Error as HeedError, MdbError}; use rayon::ThreadPoolBuildError; use serde_json::{Map, Value}; -use crate::search::ParserRule; use crate::{CriterionError, DocumentId, FieldId, SortError}; pub type Object = Map; @@ -59,8 +58,6 @@ pub enum UserError { DocumentLimitReached, InvalidDocumentId { document_id: Value }, InvalidFacetsDistribution { invalid_facets_name: HashSet }, - InvalidFilter(pest::error::Error), - InvalidFilterAttribute(pest::error::Error), InvalidGeoField { document_id: Value, object: Value }, InvalidFilterAttributeNom, InvalidFilterValue, @@ -226,12 +223,15 @@ impl fmt::Display for UserError { name_list ) } - Self::InvalidFilter(error) => error.fmt(f), Self::InvalidGeoField { document_id, object } => write!( f, "the document with the id: {} contains an invalid _geo field: {}", document_id, object ), + Self::InvalidAscDescSyntax { name } => { + write!(f, "invalid asc/desc syntax for {}", name) + } + Self::InvalidCriterionName { name } => write!(f, "invalid criterion {}", name), Self::InvalidDocumentId { document_id } => { let json = serde_json::to_string(document_id).unwrap(); write!( @@ -242,7 +242,9 @@ only composed of alphanumeric characters (a-z A-Z 0-9), hyphens (-) and undersco json ) } - Self::InvalidFilterAttribute(error) => error.fmt(f), + Self::InvalidSortName { name } => { + write!(f, "Invalid syntax for the sort parameter: {}", name) + } Self::InvalidSortableAttribute { field, valid_fields } => { let valid_names = valid_fields.iter().map(AsRef::as_ref).collect::>().join(", "); diff --git a/milli/src/lib.rs b/milli/src/lib.rs index 838817d98..33b3d9c5c 100644 --- a/milli/src/lib.rs +++ b/milli/src/lib.rs @@ -1,6 +1,3 @@ -#[macro_use] -extern crate pest_derive; - #[macro_use] pub mod documents; diff --git a/milli/src/search/facet/filter_condition.rs b/milli/src/search/facet/filter_condition.rs index d51ae27cd..e39687117 100644 --- a/milli/src/search/facet/filter_condition.rs +++ b/milli/src/search/facet/filter_condition.rs @@ -23,8 +23,7 @@ use nom::{ use self::FilterCondition::*; use self::Operator::*; -use super::parser::FilterParser; -use super::parser::{Rule, PREC_CLIMBER}; + use super::FacetNumberRange; use crate::error::{Error, UserError}; use crate::heed_codec::facet::{ diff --git a/milli/src/search/facet/mod.rs b/milli/src/search/facet/mod.rs index ddf710e32..a5c041dd5 100644 --- a/milli/src/search/facet/mod.rs +++ b/milli/src/search/facet/mod.rs @@ -2,10 +2,8 @@ pub use self::facet_distribution::FacetDistribution; pub use self::facet_number::{FacetNumberIter, FacetNumberRange, FacetNumberRevRange}; pub use self::facet_string::FacetStringIter; pub use self::filter_condition::{FilterCondition, Operator}; -pub(crate) use self::parser::Rule as ParserRule; mod facet_distribution; mod facet_number; mod facet_string; mod filter_condition; -mod parser; diff --git a/milli/src/search/facet/parser.rs b/milli/src/search/facet/parser.rs deleted file mode 100644 index 1bff27cfb..000000000 --- a/milli/src/search/facet/parser.rs +++ /dev/null @@ -1,12 +0,0 @@ -use once_cell::sync::Lazy; -use pest::prec_climber::{Assoc, Operator, PrecClimber}; - -pub static PREC_CLIMBER: Lazy> = Lazy::new(|| { - use Assoc::*; - use Rule::*; - pest::prec_climber::PrecClimber::new(vec![Operator::new(or, Left), Operator::new(and, Left)]) -}); - -#[derive(Parser)] -#[grammar = "search/facet/grammar.pest"] -pub struct FilterParser; diff --git a/milli/src/search/mod.rs b/milli/src/search/mod.rs index bec059d46..85d5dc8a7 100644 --- a/milli/src/search/mod.rs +++ b/milli/src/search/mod.rs @@ -14,7 +14,6 @@ use meilisearch_tokenizer::{Analyzer, AnalyzerConfig}; use once_cell::sync::Lazy; use roaring::bitmap::RoaringBitmap; -pub(crate) use self::facet::ParserRule; pub use self::facet::{FacetDistribution, FacetNumberIter, FilterCondition, Operator}; pub use self::matching_words::MatchingWords; use self::query_tree::QueryTreeBuilder;