search_query.ebsco.parser

EBSCO query parser.

Classes

EBSCOParser(query_str, *[, ...])

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

Parse a query string.

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.