search_query.ebsco.linter

Validator for search queries.

Classes

EBSCOQueryStringLinter([query_str])

Linter for EBSCO Query Strings

class search_query.ebsco.linter.EBSCOQueryStringLinter(query_str: str = '')

Bases: QueryStringLinter

Linter for EBSCO Query Strings

PLATFORM: PLATFORM = 'ebscohost'
UNSUPPORTED_SEARCH_FIELD_REGEX = '\\b(?!OR\\b)\\b(?!S\\d+\\b)[A-Z]{2}\\b'
VALID_FIELDS_REGEX: re.Pattern = re.compile('TI|AB|TP|TX|AU|SU|SO|IS|IB|LA|KW|DE|MH|ZY|ZU', re.IGNORECASE)
VALID_TOKEN_SEQUENCES = {TokenTypes.FIELD: [TokenTypes.SEARCH_TERM, TokenTypes.PARENTHESIS_OPEN], TokenTypes.LOGIC_OPERATOR: [TokenTypes.SEARCH_TERM, TokenTypes.FIELD, TokenTypes.PARENTHESIS_OPEN], TokenTypes.PARENTHESIS_CLOSED: [TokenTypes.PARENTHESIS_CLOSED, TokenTypes.LOGIC_OPERATOR, TokenTypes.PROXIMITY_OPERATOR], TokenTypes.PARENTHESIS_OPEN: [TokenTypes.FIELD, TokenTypes.SEARCH_TERM, TokenTypes.PARENTHESIS_OPEN], TokenTypes.PROXIMITY_OPERATOR: [TokenTypes.SEARCH_TERM, TokenTypes.PARENTHESIS_OPEN, TokenTypes.FIELD], TokenTypes.SEARCH_TERM: [TokenTypes.LOGIC_OPERATOR, TokenTypes.PROXIMITY_OPERATOR, TokenTypes.PARENTHESIS_CLOSED]}
check_invalid_near_within_operators() None

Check for invalid NEAR and WITHIN operators in the query. EBSCO does not support NEAR and WITHIN operators.

check_invalid_near_within_operators_query(query: Query) None

Check for invalid NEAR and WITHIN operators in the query. EBSCO does not support NEAR and WITHIN operators.

check_invalid_syntax() None

Check for invalid syntax in the query string.

check_invalid_token_sequences() None

Check for invalid token sequences based on token type and the previous token type.

check_search_field_general() None

Check field ‘Search Fields’ in content.

check_unsupported_wildcards(query: Query) None

Check for unsupported characters in the search string.

get_precedence(token: str) int

Returns operator precedence for logical and proximity operators.

syntax_str_to_generic_search_field_set(field_value: str) set

Translate a search field

validate_query_tree(query: Query) None

Validate the query tree. This method is called after the query tree has been built.

validate_tokens(*, tokens: List[Token], query_str: str, search_field_general: str = '') List[Token]

Pre-linting checks.