summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2025-06-17 11:47:54 +0200
committerÉtienne Loks <etienne.loks@iggdrasil.net>2025-06-17 11:51:37 +0200
commita40f985557975eaf4987925724b09c46f6decaf6 (patch)
treeb380007da1aab4d2e9934b6f878707950d1f28bf
parent7ecbd4831e706691e7d0204976d56630f2c9d113 (diff)
downloadIshtar-a40f985557975eaf4987925724b09c46f6decaf6.tar.bz2
Ishtar-a40f985557975eaf4987925724b09c46f6decaf6.zip
🐛 searches - raw search index: better management of terms with spaces
-rw-r--r--ishtar_common/models_common.py9
-rw-r--r--ishtar_common/views_item.py7
2 files changed, 11 insertions, 5 deletions
diff --git a/ishtar_common/models_common.py b/ishtar_common/models_common.py
index 13447a4d3..bb786d48d 100644
--- a/ishtar_common/models_common.py
+++ b/ishtar_common/models_common.py
@@ -1013,6 +1013,7 @@ class FullSearch(models.Model):
SEPS = [" ", "-", "/"]
values = []
# split ID terms
+ # MNP 1995-1-1/42 -> ("MNP", "1995", "1", "42")
for idx, sep in enumerate(SEPS):
if not idx:
values = value.split(sep)
@@ -1021,9 +1022,13 @@ class FullSearch(models.Model):
for val in values:
new_values += val.split(sep)
values = new_values
+ # stock also ID with separators
+ # MNP 1995-1-1 -> ("MNP", "1995-1-1")
+ for v in value.split(" "):
+ if v not in values:
+ values.append(v)
+ values = list(set(values))
for val in values:
- if len(val) < 2:
- continue
val = val.replace("'", "").lower()
result.append(f"'{val}':1")
return result
diff --git a/ishtar_common/views_item.py b/ishtar_common/views_item.py
index 82548932f..444a157e4 100644
--- a/ishtar_common/views_item.py
+++ b/ishtar_common/views_item.py
@@ -1031,12 +1031,13 @@ def _search_manage_search_vector(
if search_query:
if "extras" not in dct:
dct["extras"] = []
+ table = model._meta.db_table
dct["extras"].append(
{
"where": [
- f"{model._meta.db_table}.search_vector @@ (to_tsquery(%s, %s)) = true OR " +
- f"{model._meta.db_table}.search_vector @@ (to_tsquery('simple', %s)) = true OR "
- f"{model._meta.db_table}.search_vector::tsvector @@ %s::tsquery = true"
+ f"{table}.search_vector @@ (to_tsquery(%s, %s)) = true OR "
+ f"{table}.search_vector @@ (to_tsquery('simple', %s)) = true OR "
+ f"{table}.search_vector::tsvector @@ %s::tsquery = true"
],
"params": [settings.ISHTAR_SEARCH_LANGUAGE, search_query, search_query,
search_query],