aboutsummaryrefslogtreecommitdiffstats
path: root/python/fatcat_web/routes.py
diff options
context:
space:
mode:
authorMartin Czygan <martin.czygan@gmail.com>2019-11-08 23:00:29 +0100
committerMartin Czygan <martin.czygan@gmail.com>2019-11-08 23:12:12 +0100
commited72027bbf36e933c8db069bd02b0163a84aef83 (patch)
treedc0568703c43eec59d4ddb3cefec50f0d38f22c8 /python/fatcat_web/routes.py
parent5748f3241117b52f5295dc589374ec0c219534e4 (diff)
downloadfatcat-ed72027bbf36e933c8db069bd02b0163a84aef83.tar.gz
fatcat-ed72027bbf36e933c8db069bd02b0163a84aef83.zip
Add basic pagination to search results
The "deep paging problem" imposes some limit, which currently is a hardcoded default value, `deep_page_limit=2000` in `do_search`. Elasticsearch can be configured, too: > Note that from + size can not be more than the index.max_result_window index setting, which defaults to 10,000. -- https://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-body.html#request-body-search-from-size
Diffstat (limited to 'python/fatcat_web/routes.py')
-rw-r--r--python/fatcat_web/routes.py9
1 files changed, 7 insertions, 2 deletions
diff --git a/python/fatcat_web/routes.py b/python/fatcat_web/routes.py
index 79b594e3..a41f388d 100644
--- a/python/fatcat_web/routes.py
+++ b/python/fatcat_web/routes.py
@@ -673,9 +673,12 @@ def release_search():
if container_id and query:
query += ' container_id:"{}"'.format(container_id)
+ offset = request.args.get('offset', '0')
+ offset = max(0, int(offset)) if offset.isnumeric() else 0
+
if 'q' in request.args.keys():
# always do files for HTML
- found = do_release_search(query, fulltext_only=fulltext_only)
+ found = do_release_search(query, fulltext_only=fulltext_only, offset=offset)
return render_template('release_search.html', found=found, query=query, fulltext_only=fulltext_only)
else:
return render_template('release_search.html', query=query, fulltext_only=fulltext_only)
@@ -684,10 +687,12 @@ def release_search():
def container_search():
query = request.args.get('q')
+ offset = request.args.get('offset', '0')
+ offset = max(0, int(offset)) if offset.isnumeric() else 0
if 'q' in request.args.keys():
# always do files for HTML
- found = do_container_search(query)
+ found = do_container_search(query, offset=offset)
return render_template('container_search.html', found=found, query=query)
else:
return render_template('container_search.html', query=query)