perf: Optimize searching tags with DB indexes (#1129)

* perf: create sqlite indexes for common columns

* perf: optimize Library.search_tags

* fix(tag_search): do ordering before applying limit

* tag_search: order shorter tag names first

* update tests

* cleanup

* tag_search: use same sorting order when returning all tags

* use dict for deduplicating tags

* fix(tag_search): return descendants instead of ancestors

* perf(tag_search): remove slow calls to method `Library.tags`
This commit is contained in:
TheBobBobs
2026-05-11 05:48:30 +00:00
committed by GitHub
parent c15e2b56ee
commit 47c3d5338f
3 changed files with 73 additions and 69 deletions

View File

@@ -130,10 +130,10 @@ def test_library_search(library: Library, entry_full: Entry):
def test_tag_search(library: Library):
tag = library.tags[0]
assert library.search_tags(tag.name.lower())
assert library.search_tags(tag.name.upper())
assert library.search_tags(tag.name[2:-2])
assert library.search_tags(tag.name * 2) == [set(), set()]
assert library.search_tags(tag.name.lower())[0]
assert library.search_tags(tag.name.upper())[0]
assert library.search_tags(tag.name[2:-2])[0]
assert library.search_tags(tag.name * 2) == ([], [])
def test_get_entry(library: Library, entry_min: Entry):