search_query.ebsco package

Submodules

search_query.ebsco.constants module

Constants for EBSCO.

search_query.ebsco.constants.generic_field_to_syntax_field(generic_field: str) str

Convert a set of generic search fields to a set of syntax strings.

search_query.ebsco.constants.map_to_standard(syntax_str: str) str

Map a syntax string to a standard syntax string.

search_query.ebsco.constants.syntax_str_to_generic_field_set(field_value: str) set

Translate a search field

search_query.ebsco.linter module

Validator for search queries.

class search_query.ebsco.linter.EBSCOListLinter(parser: EBSCOListParser, string_parser_class: Type[QueryStringParser])

Bases: QueryListLinter

Linter for PubMed Query Strings

validate_tokens() None

Validate token list

class search_query.ebsco.linter.EBSCOQueryStringLinter(query_str: str = '', *, original_str: str | None = None, silent: bool = False)

Bases: QueryStringLinter

Linter for EBSCO Query Strings

PLATFORM: PLATFORM = 'ebscohost'
UNSUPPORTED_FIELD_REGEX = '\\b(?!OR\\b)\\b(?!S\\d+\\b)[A-Z]{2}\\b'
VALID_TOKEN_SEQUENCES = {TokenTypes.FIELD: [TokenTypes.TERM, TokenTypes.PARENTHESIS_OPEN], TokenTypes.LOGIC_OPERATOR: [TokenTypes.TERM, TokenTypes.FIELD, TokenTypes.PARENTHESIS_OPEN], TokenTypes.PARENTHESIS_CLOSED: [TokenTypes.PARENTHESIS_CLOSED, TokenTypes.LOGIC_OPERATOR, TokenTypes.PROXIMITY_OPERATOR], TokenTypes.PARENTHESIS_OPEN: [TokenTypes.FIELD, TokenTypes.TERM, TokenTypes.PARENTHESIS_OPEN], TokenTypes.PROXIMITY_OPERATOR: [TokenTypes.TERM, TokenTypes.PARENTHESIS_OPEN, TokenTypes.FIELD], TokenTypes.TERM: [TokenTypes.LOGIC_OPERATOR, TokenTypes.PROXIMITY_OPERATOR, TokenTypes.PARENTHESIS_CLOSED]}
VALID_fieldS_REGEX: re.Pattern = re.compile('TI|AB|TP|TX|AU|SU|SO|IS|IB|LA|KW|DE|MH|ZY|ZU|PT', re.IGNORECASE)
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_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_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.

messages: List[dict]
query: Optional[Query]
syntax_str_to_generic_field_set(field_value: str) set

Translate a search field

tokens: List[Token]
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, field_general: str = '') List[Token]

Pre-linting checks.

search_query.ebsco.parser module

EBSCO query parser.

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.

query_dict: dict
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.

linter: QueryStringLinter
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.

tokens: list

search_query.ebsco.serializer module

EBSCO serializer

search_query.ebsco.serializer.to_string_ebsco(query: Query) str

Convert the query to a string representation for EBSCO.

search_query.ebsco.translator module

EBSCO query translator.

class search_query.ebsco.translator.EBSCOTranslator

Bases: QueryTranslator

Translator for EBSCO queries.

classmethod replace_non_supported_fields(query: Query) None

Replace non-supported fields with nearest supported field.

classmethod to_generic_syntax(query: Query) Query

Convert the query to a generic syntax.

classmethod to_specific_syntax(query: Query) Query

Convert the query to a specific syntax.

classmethod translate_fields_to_generic(query: Query) None

Translate search fields to standard names using self.field_TRANSLATION_MAP

Module contents

Top-level package for EBSCOHost.