search_query.ebsco.parser

EBSCO query parser.

Classes

EBSCOListParser(query_list[, field_general])

Parser for EBSCO (list format) queries.

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

Parser for EBSCO queries.

class search_query.ebsco.parser.EBSCOListParser(query_list: str, field_general: str = '')

Bases: QueryListParser

Parser for EBSCO (list format) queries.

LIST_ITEM_REFERENCE = re.compile('S\\d+|\\#\\d+')
parse() Query

Parse EBSCO list query.

class search_query.ebsco.parser.EBSCOParser(query_str: str, *, field_general: str = '', offset: dict | None = None, original_str: str | None = None, silent: bool = False)

Bases: QueryStringParser

Parser for EBSCO queries.

FIELD_REGEX = re.compile('\\b([A-Z]{2})\\b')
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)
TERM_REGEX = re.compile('\\"[^\\"]*\\"|\\*?\\b[^()\\s]+')
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[Token], field_context: SearchField | None = None) Query

Top-down predictive parser for query tree.

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.