From 9a792e10e35e071dcbe8b3110c2870e6dfcddf7f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patryk=20Szczepa=C5=84ski?= Date: Fri, 8 Jul 2022 08:35:15 +0200 Subject: [PATCH 1/2] Shorten ifs using membership logic --- xapian_backend.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/xapian_backend.py b/xapian_backend.py index 562ded3..fd1e2d3 100755 --- a/xapian_backend.py +++ b/xapian_backend.py @@ -130,7 +130,7 @@ class XHValueRangeProcessor(xapian.ValueRangeProcessor): begin = -sys.maxsize - 1 elif field_type == 'float': begin = float('-inf') - elif field_type == 'date' or field_type == 'datetime': + elif field_type in ['date', 'datetime']: begin = '00010101000000' elif end == '*': if field_type == 'text': @@ -139,7 +139,7 @@ class XHValueRangeProcessor(xapian.ValueRangeProcessor): end = sys.maxsize elif field_type == 'float': end = float('inf') - elif field_type == 'date' or field_type == 'datetime': + elif field_type in ['date', 'datetime']: end = '99990101000000' if field_type == 'float': @@ -1612,7 +1612,7 @@ def _term_to_xapian_value(term, field_type): value = INTEGER_FORMAT % term elif field_type == 'float': value = xapian.sortable_serialise(term) - elif field_type == 'date' or field_type == 'datetime': + elif field_type in ['date', 'datetime']: if field_type == 'date': # http://stackoverflow.com/a/1937636/931303 and comments term = datetime.datetime.combine(term, datetime.time()) @@ -1650,7 +1650,7 @@ def _from_xapian_value(value, field_type): return int(value) elif field_type == 'float': return xapian.sortable_unserialise(value) - elif field_type == 'date' or field_type == 'datetime': + elif field_type in ['date', 'datetime']: datetime_value = datetime.datetime.strptime(value, DATETIME_FORMAT) if field_type == 'datetime': return datetime_value From 251e9241225b643acefe125d5d7444f8ff19f77e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patryk=20Szczepa=C5=84ski?= <52240554+PSzczepanski996@users.noreply.github.com> Date: Fri, 8 Jul 2022 21:52:10 +0200 Subject: [PATCH 2/2] Add ability to configure NGRAM's --- README.rst | 2 ++ xapian_backend.py | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/README.rst b/README.rst index 581b0d4..ebd6e87 100644 --- a/README.rst +++ b/README.rst @@ -92,6 +92,8 @@ The backend has the following optional settings: See `here `__ for more information about the different strategies. +- ``XAPIAN_NGRAM_MIN_LENGTH``, ``XAPIAN_NGRAM_MAX_LENGTH``: options for custom configuration of ngrams (phrases) length. + - ``HAYSTACK_XAPIAN_USE_LOCKFILE``: Use a lockfile to prevent database locking errors when running management commands with multiple workers. Defaults to `True`. diff --git a/xapian_backend.py b/xapian_backend.py index fd1e2d3..d6a92bb 100755 --- a/xapian_backend.py +++ b/xapian_backend.py @@ -19,8 +19,8 @@ from haystack.inputs import AutoQuery from haystack.models import SearchResult from haystack.utils import get_identifier, get_model_ct -NGRAM_MIN_LENGTH = 2 -NGRAM_MAX_LENGTH = 15 +NGRAM_MIN_LENGTH = getattr(settings, 'XAPIAN_NGRAM_MIN_LENGTH', 2) +NGRAM_MAX_LENGTH = getattr(settings, 'XAPIAN_NGRAM_MAX_LENGTH', 15) try: import xapian