mirror of
https://github.com/paperless-ngx/paperless-ngx.git
synced 2025-04-09 09:58:20 -05:00
Enhancement: always place search term first in autocomplete results (#6142)
This commit is contained in:
parent
ebe1479503
commit
fc68f79cc8
@ -468,10 +468,14 @@ def autocomplete(
|
|||||||
termCounts = Counter()
|
termCounts = Counter()
|
||||||
if results.has_matched_terms():
|
if results.has_matched_terms():
|
||||||
for hit in results:
|
for hit in results:
|
||||||
for _, term in hit.matched_terms():
|
for _, match in hit.matched_terms():
|
||||||
termCounts[term] += 1
|
termCounts[match] += 1
|
||||||
terms = [t for t, _ in termCounts.most_common(limit)]
|
terms = [t for t, _ in termCounts.most_common(limit)]
|
||||||
|
|
||||||
|
term_encoded = term.encode("UTF-8")
|
||||||
|
if term_encoded in terms:
|
||||||
|
terms.insert(0, terms.pop(terms.index(term_encoded)))
|
||||||
|
|
||||||
return terms
|
return terms
|
||||||
|
|
||||||
|
|
||||||
|
@ -595,6 +595,28 @@ class TestDocumentSearchApi(DirectoriesMixin, APITestCase):
|
|||||||
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
||||||
self.assertEqual(response.data, [])
|
self.assertEqual(response.data, [])
|
||||||
|
|
||||||
|
def test_search_autocomplete_search_term(self):
|
||||||
|
"""
|
||||||
|
GIVEN:
|
||||||
|
- Search results for autocomplete include the exact search term
|
||||||
|
WHEN:
|
||||||
|
- API request for autocomplete
|
||||||
|
THEN:
|
||||||
|
- The search term is returned first in the autocomplete results
|
||||||
|
"""
|
||||||
|
d1 = Document.objects.create(
|
||||||
|
title="doc1",
|
||||||
|
content="automobile automatic autobots automobile auto",
|
||||||
|
checksum="1",
|
||||||
|
)
|
||||||
|
|
||||||
|
with AsyncWriter(index.open_index()) as writer:
|
||||||
|
index.update_document(writer, d1)
|
||||||
|
|
||||||
|
response = self.client.get("/api/search/autocomplete/?term=auto")
|
||||||
|
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
||||||
|
self.assertEqual(response.data[0], b"auto")
|
||||||
|
|
||||||
@pytest.mark.skip(reason="Not implemented yet")
|
@pytest.mark.skip(reason="Not implemented yet")
|
||||||
def test_search_spelling_correction(self):
|
def test_search_spelling_correction(self):
|
||||||
with AsyncWriter(index.open_index()) as writer:
|
with AsyncWriter(index.open_index()) as writer:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user