Skip to content

Commit bc82a58

Browse files
committed
Fix invalid similarity checker
1 parent 9f08f3a commit bc82a58

File tree

2 files changed

+28
-4
lines changed

2 files changed

+28
-4
lines changed

django_mongodb_backend/indexes.py

+6-4
Original file line numberDiff line numberDiff line change
@@ -159,10 +159,12 @@ def check(self, model, connection):
159159
for func in similarities:
160160
if func not in self.ALLOWED_SIMILARITY_FUNCTIONS:
161161
errors.append(
162-
f"{func} isn't a valid similarity function, options "
163-
f"'are {','.join(self.ALLOWED_SIMILARITY_FUNCTIONS)}",
164-
obj=self,
165-
id=f"{error_id_prefix}.E003",
162+
Error(
163+
f"{func} isn't a valid similarity function, options "
164+
f"are {', '.join(sorted(self.ALLOWED_SIMILARITY_FUNCTIONS))}",
165+
obj=self,
166+
id=f"{error_id_prefix}.E004",
167+
)
166168
)
167169
for field_name, _ in self.fields_orders:
168170
field_ = model._meta.get_field(field_name)

tests/system_checks/tests.py

+22
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,28 @@ class Meta:
7777
],
7878
)
7979

80+
def test_vectorsearch_invalid_similarity_function(self):
81+
class Article(models.Model):
82+
vector_data = ArrayField(models.DecimalField(), size=10)
83+
84+
class Meta:
85+
indexes = [
86+
VectorSearchIndex(fields=["vector_data"], similarities="sum"),
87+
]
88+
89+
errors = checks.run_checks(app_configs=self.apps.get_app_configs(), databases={"default"})
90+
self.assertEqual(
91+
errors,
92+
[
93+
checks.Error(
94+
"sum isn't a valid similarity function, "
95+
"options are cosine, dotProduct, euclidean",
96+
id="django_mongodb_backend.indexes.VectorSearchIndex.E004",
97+
obj=Article._meta.indexes[0],
98+
)
99+
],
100+
)
101+
80102
def test_vectorsearch(self):
81103
class Article(models.Model):
82104
vector_data = ArrayField(models.DecimalField(), size=10)

0 commit comments

Comments
 (0)