anki/qt/aqt
Abdo 946eb46813
Add option to exclude fields from search (#2394)
* Add option to exclude fields from unqualified searches

* Use temp tables instead

This is slightly faster according to my (very rough) tests.

* Make query a bit more readable

* exclude_from_search -> excludeFromSearch

* Remove superfluous notetypes table from query

* Rework to use field search logic

Thanks to Rumo for the suggestion: https://github.com/ankitects/anki/pull/2394#issuecomment-1446702402

* Exclude fields from field searches too

* Fix error on notetypes with no included fields

* Add back the exclude_fields function

This approach seems to perform better on average than the previously
benchmarked ones.

* Use pure-SQL approach to excluding fields

* Change single field search to use new approach

* Fix flawed any_excluded/sortf_excluded logic

* Support field exclusion in the nc operator

Also fix search text being wrapped in % in the any_excluded=true case.

* Support field exclusion in the re and w operators

* Label field exclusion as being slower

* Unqualified search should be wrapped in % in all cases

I was under the impression that it shouldn't be wrapped with the new
field exclusion logic.

* Remove unnecessary .collect()

* Refactor some complex return types into structs

* Do not exclude fields in field searches

* Add a test and docstring for CollectRanges

* Avoid destructuring in closures

* Remove the exclude_fields function

Minor wording tweaks by dae:
* num_fields -> total_fields_in_note
* fields -> field_ranges_to_search
* fields -> fields_to_search
* SingleField -> FieldQualified
* mid -> ntid
2023-03-20 07:46:03 +10:00
..
browser Check for division by zero when calculating browser aspect ratio (#2437) 2023-03-16 16:02:16 +10:00
data Fix sync indicator not being visible in deck list screen 2023-01-18 22:32:39 +10:00
forms Add option to exclude fields from search (#2394) 2023-03-20 07:46:03 +10:00
import_export Deck scoped dupe check (#2372) 2023-02-16 17:53:36 +10:00
operations Move away from Bazel (#2202) 2022-11-27 15:24:20 +10:00
qt Move away from Bazel (#2202) 2022-11-27 15:24:20 +10:00
__init__.py Fallback to Wayland if X11 is not available (#2433) 2023-03-15 15:11:33 +10:00
_macos_helper.py Move away from Bazel (#2202) 2022-11-27 15:24:20 +10:00
about.py Add a translator to About as requested 2023-01-25 23:42:39 +10:00
addcards.py add shortcut to close addcards window (#2031) 2022-08-31 20:09:09 +10:00
addons.py Use a webview to show add-on's config help (#2281) 2022-12-21 16:55:31 +10:00
changenotetype.py Rework & unify webview identification and title setting (#2366) 2023-02-10 14:53:11 +10:00
clayout.py Create the hook will_show_web to control html5 media elements with Javascript (#2340) 2023-02-13 14:50:26 +10:00
colors.py Move away from Bazel (#2202) 2022-11-27 15:24:20 +10:00
customstudy.py Move away from Bazel (#2202) 2022-11-27 15:24:20 +10:00
dbcheck.py Backup improvements (#1728) 2022-03-21 19:40:42 +10:00
debug_console.py Improve debug console (#2435) 2023-03-15 15:29:05 +10:00
deckbrowser.py Set deck to current deck when clicked on table row (#2383) 2023-02-28 12:09:40 +10:00
deckchooser.py Make dialogs non-blocking (#1650) 2022-02-10 09:53:13 +10:00
deckconf.py Move away from Bazel (#2202) 2022-11-27 15:24:20 +10:00
deckdescription.py Import submodules directly (#1662) 2022-02-13 13:40:47 +10:00
deckoptions.py Rework & unify webview identification and title setting (#2366) 2023-02-10 14:53:11 +10:00
editcurrent.py PEP8 editorMode 2022-01-12 15:01:43 +10:00
editor.py Improved fix for open editors getting carried to different notetypes (#2422) 2023-03-08 19:22:02 +10:00
emptycards.py Rework & unify webview identification and title setting (#2366) 2023-02-10 14:53:11 +10:00
errors.py Probable fix for "unknown error" 2022-11-23 18:51:56 +10:00
exporting.py Add deck/collection export hooks (#1971) 2022-07-22 12:45:47 +10:00
fields.py Add option to exclude fields from search (#2394) 2023-03-20 07:46:03 +10:00
filtered_deck.py Move away from Bazel (#2202) 2022-11-27 15:24:20 +10:00
flags.py Introduce new color palette using Sass maps (#2016) 2022-09-16 14:11:18 +10:00
gui_hooks.py Move away from Bazel (#2202) 2022-11-27 15:24:20 +10:00
importing.py Move away from Bazel (#2202) 2022-11-27 15:24:20 +10:00
legacy.py Import submodules directly (#1662) 2022-02-13 13:40:47 +10:00
main.py Improve debug console (#2435) 2023-03-15 15:29:05 +10:00
mediacheck.py Add option to tag notes with missing media (#2379) 2023-02-20 18:48:09 +10:00
mediasrv.py Ensure state mutator runs after card is rendered (#2421) 2023-03-16 16:31:00 +10:00
mediasync.py Rework syncing code, and replace local sync server (#2329) 2023-01-18 12:43:46 +10:00
modelchooser.py Add callback and non-blocking option to StudyDeck (#1643) 2022-02-07 22:05:59 +10:00
models.py Fix notetypes screen not being closable on Mac 2023-03-15 13:52:36 +10:00
mpv.py Fix two mpv issues on Windows (#2294) 2023-01-03 11:59:39 +10:00
notetypechooser.py Make dialogs non-blocking (#1650) 2022-02-10 09:53:13 +10:00
overview.py Do not append description button for filtered deck (#2266) 2022-12-11 15:03:11 +10:00
package.py Another attempt at fixing missing cacert.pem 2022-12-30 15:30:53 +10:00
preferences.py Rebuild study queues if v3 scheduler toggled (#2448) 2023-03-19 11:17:44 +10:00
profiles.py Turn reduce motion on by default 2023-03-19 12:06:14 +10:00
progress.py fix progress.update(value=0) to not increment progress (#1998) 2022-08-01 20:16:42 +10:00
props.py Move away from Bazel (#2202) 2022-11-27 15:24:20 +10:00
py.typed
reviewer.py Ensure state mutator runs after card is rendered (#2421) 2023-03-16 16:31:00 +10:00
schema_change_tracker.py
sound.py Fix packaged audio tools path on Windows (#2419) 2023-03-06 19:27:08 +10:00
stats.py Rework & unify webview identification and title setting (#2366) 2023-02-10 14:53:11 +10:00
studydeck.py Fix new deck not being selected (#1681) 2022-02-22 21:51:23 +10:00
stylesheets.py Add missing Qt styles for disabled state (#2386) 2023-02-20 18:27:12 +10:00
switch.py Auto-hide toolbar in Reviewer (#2262) 2023-01-09 14:39:31 +10:00
sync.py Rework syncing code, and replace local sync server (#2329) 2023-01-18 12:43:46 +10:00
tagedit.py switch to new-style PyQt scoped enums and Qt6 2021-10-15 12:57:19 +10:00
taglimit.py Move custom study tag and limit gathering+saving into the backend 2022-03-10 16:23:03 +10:00
taskman.py Add apkg import/export on backend (#1743) 2022-05-02 21:12:46 +10:00
theme.py Revamp Preferences, implement Minimalist Mode and Qt widget gallery to test GUI changes (#2289) 2023-01-18 21:24:16 +10:00
toolbar.py Rework & unify webview identification and title setting (#2366) 2023-02-10 14:53:11 +10:00
tts.py Revert backwards incompatible changes to TTSVoice (#2378) 2023-02-20 17:43:18 +10:00
undo.py
update.py Update Python deps 2022-09-24 09:46:43 +10:00
utils.py Fix silent file save failures and bad default save path in Flatpak (#2427) 2023-03-09 20:23:58 +10:00
webview.py Fix confusion of reduce_motion with minimalist_mode (#2413) 2023-03-06 18:15:43 +10:00
widgetgallery.py Improve debug console (#2435) 2023-03-15 15:29:05 +10:00
winpaths.py run pyupgrade over codebase [python upgrade required] 2021-10-04 15:05:48 +10:00