aboutsummaryrefslogtreecommitdiffstats
path: root/fatcat_covid19/search.py
diff options
context:
space:
mode:
Diffstat (limited to 'fatcat_covid19/search.py')
-rw-r--r--fatcat_covid19/search.py30
1 files changed, 29 insertions, 1 deletions
diff --git a/fatcat_covid19/search.py b/fatcat_covid19/search.py
index 82d5c60..7d4596d 100644
--- a/fatcat_covid19/search.py
+++ b/fatcat_covid19/search.py
@@ -71,13 +71,41 @@ def generic_search_execute(search, limit=25, offset=0, deep_page_limit=2000):
"query_time_ms": int(resp.took),
}
-def do_fulltext_search(q, limit=25, offset=0):
+def do_fulltext_search(q, limit=25, offset=0, filter_time=None, filter_type=None):
# Convert raw DOIs to DOI queries
if len(q.split()) == 1 and q.startswith("10.") and q.count("/") >= 1:
q = 'doi:"{}"'.format(q)
search = Search(using=app.es_client, index=app.config['ELASTICSEARCH_FULLTEXT_INDEX'])
+
+ # type filters
+ if filter_type == "papers":
+ search = search.filter("terms", release_type=[ "article-journal", "paper-conference", ])
+ elif filter_type == "reports":
+ search = search.filter("terms", release_type=[ "report", "standard", ])
+ elif filter_type == "datasets":
+ search = search.filter("terms", release_type=[ "dataset", "software", ])
+ elif filter_type == "everything" or filter_type == None:
+ pass
+ else:
+ abort(400)
+
+ # time filters
+ if filter_time == "past_week":
+ week_ago_date = str(datetime.date.today() - datetime.timedelta(days=7))
+ search = search.filter("range", release_date=dict(gte=week_ago_date))
+ elif filter_time == "this_year":
+ search = search.filter("term", release_year=datetime.date.today().year)
+ elif filter_time == "since_2000":
+ search = search.filter("range", release_year=dict(gte=2000))
+ elif filter_time == "before_1925":
+ search = search.filter("range", release_year=dict(lte=1924))
+ elif filter_time == "all_time" or filter_time == None:
+ pass
+ else:
+ abort(400)
+
search = search.query(
'query_string',
query=q,