Load

Queries can be loaded from strings/files, defined as objects, or retrieved from the internal database.

String/File

Search-query can parse queries from strings and JSON query files. To load a JSON query file, run the parser:

from search_query.search_file import load_search_file
from search_query.parser import parse

search = load_search_file("search-file.json")
query = parse(search.search_string, platform=search.platform)

JSON files in the standard format (Haddaway et al. 2022). Example:

{
   "record_info": {},
   "authors": [{"name": "Wagner, G.", "ORCID": "0000-0000-0000-1111"}],
   "date": {"data_entry": "2019.07.01", "search_conducted": "2019.07.01"},
   "platform": "Web of Science",
   "database": ["SCI-EXPANDED", "SSCI", "A&HCI"],
   "search_string": "TS=(quantum AND dot AND spin)"
}

Query objects

Query objects can also be created programmatically.

from search_query import OrQuery, AndQuery

# Typical building-blocks approach
digital_synonyms = OrQuery(["digital", "virtual", "online"], search_field="abstract")
work_synonyms = OrQuery(["work", "labor", "service"], search_field="abstract")
query = AndQuery([digital_synonyms, work_synonyms])

Database

Queries can be loaded from the internal database directly:

from search_query.database_queries import AIS_8

print(AIS_8.to_string())
# Output:
# (SO=("European Journal of Information Systems" OR
#      "Information Systems Journal" OR
#      "Information Systems Research" OR
#      "Journal of the Association for Information Systems" OR
#      "Journal of Information Technology" OR
#      "Journal of Management Information Systems" OR
#      "Journal of Strategic Information Systems" OR
#      "MIS Quarterly") OR
# IS=(0960-085X OR
#     1476-9344 OR
#     1350-1917 OR
#     1365-2575 OR
#     1047-7047 OR
#     1526-5536 OR
#     1536-9323 OR
#     0268-3962 OR
#     1466-4437 OR
#     0742-1222 OR
#     1557-928X OR
#     0963-8687 OR
#     1873-1198 OR
#     0276-7783 OR
#     2162-9730))

It is also possible to load queries from the database using the database module:

from search_query.database import load_query

FT50 = load_query("journals_FT50")

Once loaded, the query can be used as a building block for other queries:

# Combination with custom query blocks
custom_block = ORQuery(....)
full_query = ANDQuery(custom_block, AIS_8)