Skip to content
This repository has been archived by the owner on Apr 4, 2023. It is now read-only.

Commit

Permalink
Merge pull request #85 from eregs/475-config-search-limit
Browse files Browse the repository at this point in the history
Allow pgsql filter threshold to be configured.
  • Loading branch information
cmc333333 authored Aug 21, 2017
2 parents 618955d + 228d8f6 commit d544333
Show file tree
Hide file tree
Showing 4 changed files with 9 additions and 3 deletions.
3 changes: 3 additions & 0 deletions regcore/settings/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,9 @@
# hitting SQLite limits
BATCH_SIZE = 50

# Lower bound for search results to appear when using pgsql search
PG_SEARCH_RANK_CUTOFF = 0.15

_envvars = ('HTTP_AUTH_USER', 'HTTP_AUTH_PASSWORD')
for var in _envvars:
globals()[var] = os.environ.get(var)
Expand Down
4 changes: 3 additions & 1 deletion regcore_pgsql/tests/views_tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,11 @@ def make_queryset_mock():
return queryset_mock


def test_matching_sections(monkeypatch):
def test_matching_sections(monkeypatch, settings):
"""Search arguments should be converted to the correct arguments."""
queryset_mock = make_queryset_mock()
monkeypatch.setattr(views.Document, 'objects', queryset_mock)
settings.PG_SEARCH_RANK_CUTOFF = 0.1234

result = views.matching_sections(SearchArgs(
q='some terms', version='vvv', regulation='rrr',
Expand All @@ -29,6 +30,7 @@ def test_matching_sections(monkeypatch):
assert 'some terms' in str(queryset_mock.annotate.call_args)
assert 'search_vector' in str(queryset_mock.annotate.call_args)
filters = queryset_mock.filter.call_args_list
assert call(rank__gt=0.1234) in filters
assert call(version='vvv') in filters
assert call(documentindex__doc_root='rrr') in filters

Expand Down
3 changes: 2 additions & 1 deletion regcore_pgsql/views.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
from django.conf import settings
from django.contrib.postgres.search import SearchRank, SearchQuery
from django.db.models import F, Q

Expand All @@ -11,7 +12,7 @@ def matching_sections(search_args):
sections_query = Document.objects\
.annotate(rank=SearchRank(
F('documentindex__search_vector'), SearchQuery(search_args.q)))\
.filter(rank__gte=0.15)\
.filter(rank__gt=settings.PG_SEARCH_RANK_CUTOFF)\
.order_by('-rank')

if search_args.version:
Expand Down
2 changes: 1 addition & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

setup(
name="regcore",
version="4.1.0",
version="4.2.0",
license="public domain",
packages=find_packages(),
include_package_data=True,
Expand Down

0 comments on commit d544333

Please sign in to comment.