search_query.ebsco.parser
EBSCO query parser.
Classes
|
Parser for EBSCO queries. |
- class search_query.ebsco.parser.EBSCOParser(query_str: str, *, search_field_general: str = '', mode: str = 'strict')
Bases:
QueryStringParser
Parser for EBSCO queries.
- LOGIC_OPERATOR_REGEX = re.compile('\\b(AND|OR|NOT)\\b', re.IGNORECASE)
- OPERATOR_REGEX: re.Pattern = re.compile('\\b(AND|OR|NOT)\\b|(N|W)\\d+|(NEAR|WITHIN)/\\d+')
- PARENTHESIS_REGEX = re.compile('[\\(\\)]')
- PROXIMITY_OPERATOR_REGEX = re.compile('(N|W)\\d+|(NEAR|WITHIN)/\\d+', re.IGNORECASE)
- SEARCH_FIELD_REGEX = re.compile('\\b([A-Z]{2})\\b')
- SEARCH_TERM_REGEX = re.compile('\\"[^\\"]*\\"|\\*?\\b[^()\\s]+')
- append_node(parent: Query | None, current_operator: Query | None, node: Query) tuple[Query | None, Query | None]
Append new Query node
- append_operator(parent: Query | None, operator_node: Query) tuple[Query, Query]
Append new Operator node
- combine_subsequent_tokens() None
Combine subsequent tokens based on specific conditions.
- fix_ambiguous_tokens() None
Fix ambiguous tokens that could be misinterpreted as a search field.
- parse_query_tree(tokens: list | None = None, field_context: SearchField | None = None) Query
Build a query tree from a list of tokens with dynamic restructuring based on PRECEDENCE.
- pattern = re.compile('[\\(\\)]|\\b(AND|OR|NOT)\\b|(N|W)\\d+|(NEAR|WITHIN)/\\d+|\\b([A-Z]{2})\\b|\\"[^\\"]*\\"|\\*?\\b[^()\\s]+')
- tokenize() None
Tokenize the query_str.