From ed72027bbf36e933c8db069bd02b0163a84aef83 Mon Sep 17 00:00:00 2001 From: Martin Czygan Date: Fri, 8 Nov 2019 23:00:29 +0100 Subject: 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 --- python/fatcat_web/routes.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'python/fatcat_web/routes.py') 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) -- cgit v1.2.3