Skip to content

Commit 881842e

Browse files
committed
Add search tests and fix fuzzy search
1 parent 733e570 commit 881842e

File tree

4 files changed

+126
-249
lines changed

4 files changed

+126
-249
lines changed

search/management/commands/buildindex.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@ def build_vector_index(self):
136136
nlp = spacy.load("en_core_web_md")
137137

138138
# Disable components we don't need for speed
139-
nlp.disable_pipes("ner", "parser")
139+
nlp.select_pipes(disable=["ner", "parser"])
140140

141141
qs = search.SearchResult.objects.all().order_by("id")
142142
total_count = qs.count()

search/services.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ def get_spacy_model():
7676

7777
logger.info("Loading spaCy model: en_core_web_md")
7878
_spacy_model = spacy.load("en_core_web_md")
79-
_spacy_model.disable_pipes("ner", "parser")
79+
_spacy_model.select_pipes(disable=["ner", "parser"])
8080
return _spacy_model
8181

8282
except ImportError:
@@ -281,13 +281,15 @@ def _fuzzy_search(self, query: str, limit: int, filters: Dict[str, Any] = None)
281281

282282
scored = []
283283
query_lower = query.lower()
284+
query_first = query_lower[0] if query_lower else ''
284285

285286
for idx, name in enumerate(names):
286287
name_lower = name.lower()
287288

288-
if any(w in name_lower for w in query_lower.split() if len(w) > 2):
289+
# Pre-filter: first letter must match, or query appears as substring
290+
if name_lower.startswith(query_first) or query_lower in name_lower:
289291
score = self._calculate_fuzzy_score(query, name)
290-
if score > 3.0:
292+
if score > 5.0: # Require closer match
291293
scored.append((idx, score, name))
292294

293295
scored.sort(key=lambda x: x[1], reverse=True)

0 commit comments

Comments
 (0)