diff --git a/serve.py b/serve.py
index 32e7894..66a0839 100644
--- a/serve.py
+++ b/serve.py
@@ -215,6 +215,7 @@ def main():
opt_q = request.args.get('q', '') # search request in the text box
opt_tags = request.args.get('tags', default_tags) # tags to rank by if opt_rank == 'tag'
opt_pid = request.args.get('pid', '') # pid to find nearest neighbors to
+ opt_category_filter = request.args.get('category', '') # primary category to filter
opt_time_filter = request.args.get('time_filter', default_time_filter) # number of days to filter by
opt_skip_have = request.args.get('skip_have', default_skip_have) # hide papers we already have?
opt_svm_c = request.args.get('svm_c', '') # svm C parameter
@@ -246,6 +247,14 @@ def main():
else:
raise ValueError("opt_rank %s is not a thing" % (opt_rank, ))
+ # filter by primary category
+ if opt_category_filter:
+ pdb = get_papers()
+ kv = {k:v for k,v in pdb.items()} # read all of metas to memory at once, for efficiency
+ keep = [i for i,pid in enumerate(pids) if (kv[pid]['arxiv_primary_category']['term'])
+ == opt_category_filter]
+ pids, scores = [pids[i] for i in keep], [scores[i] for i in keep]
+
# filter by time
if opt_time_filter:
mdb = get_metas()
diff --git a/templates/index.html b/templates/index.html
index 9811087..b941c75 100644
--- a/templates/index.html
+++ b/templates/index.html
@@ -54,6 +54,10 @@ var move_page = function(int_offset) {
+
+
+
+