Go to file
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
.buildkite Whitelist dependabot 2023-01-07 09:53:29 +10:00
.cargo Fix clean build failure due to protoc change 2023-01-26 09:33:39 +10:00
.config Fix accidental inclusion of openssl dependency in Linux builds 2023-01-19 00:44:22 +10:00
.github/ISSUE_TEMPLATE Move away from Bazel (#2202) 2022-11-27 15:24:20 +10:00
.vscode.dist Move away from Bazel (#2202) 2022-11-27 15:24:20 +10:00
build Don't download nodejs if NODE_BINARY is set, add YARN_BINARY (#2446) 2023-03-18 13:44:46 +10:00
cargo Bump tempfile version to drop old remove_dir_all version 2023-03-06 18:23:19 +10:00
docs Use a ninja variable for node binary (#2346) 2023-01-25 21:05:11 +10:00
ftl Add option to exclude fields from search (#2394) 2023-03-20 07:46:03 +10:00
proto Add option to exclude fields from search (#2394) 2023-03-20 07:46:03 +10:00
pylib Ensure state mutator runs after card is rendered (#2421) 2023-03-16 16:31:00 +10:00
python Implement TTS using windows crate (#2371) 2023-02-17 12:26:07 +10:00
qt Add option to exclude fields from search (#2394) 2023-03-20 07:46:03 +10:00
rslib Add option to exclude fields from search (#2394) 2023-03-20 07:46:03 +10:00
sass Fix black on grey minimalist buttons in KDE (#2414) 2023-03-06 19:46:34 +10:00
tools Fix accidental inclusion of openssl dependency in Linux builds 2023-01-19 00:44:22 +10:00
ts Fix current tag text not committed when changing note via shortcut key (#2441) 2023-03-16 16:48:29 +10:00
.deny.toml Update Rust deps (#2332) 2023-01-18 22:24:29 +10:00
.dprint.json Update Chrono Crate (#2242) 2022-12-07 17:00:14 +10:00
.eslintrc.js Move away from Bazel (#2202) 2022-11-27 15:24:20 +10:00
.gitattributes try again to improve GitHub's language stats 2021-01-20 13:20:45 +10:00
.gitignore Rework syncing code, and replace local sync server (#2329) 2023-01-18 12:43:46 +10:00
.gitmodules Move away from Bazel (#2202) 2022-11-27 15:24:20 +10:00
.isort.cfg Move away from Bazel (#2202) 2022-11-27 15:24:20 +10:00
.mypy.ini Move away from Bazel (#2202) 2022-11-27 15:24:20 +10:00
.prettierignore Improved add-on extension API (#1626) 2022-02-03 14:52:11 +10:00
.prettierrc Mathjax editor improvements (#1502) 2021-11-23 10:27:32 +10:00
.pylintrc Implement TTS using windows crate (#2371) 2023-02-17 12:26:07 +10:00
.rustfmt-empty.toml Move away from Bazel (#2202) 2022-11-27 15:24:20 +10:00
.rustfmt.toml Switch Rust import style (#2330) 2023-01-18 21:39:55 +10:00
.version Bump version 2023-02-22 16:16:28 +10:00
Cargo.lock Check URLs in TS code (#2436) 2023-03-15 15:46:03 +10:00
Cargo.toml Rework syncing code, and replace local sync server (#2329) 2023-01-18 12:43:46 +10:00
CONTRIBUTORS Don't download nodejs if NODE_BINARY is set, add YARN_BINARY (#2446) 2023-03-18 13:44:46 +10:00
LICENSE move aqt_data into source folder; implement wheel building 2020-11-04 12:14:03 +10:00
ninja Add env var to enable sourcemaps 2022-12-04 11:37:16 +10:00
package.json Update protobufjs to remove transitive dependency on taffydb 2023-02-02 17:43:25 +10:00
pkgkey.asc add public key for release signing 2018-09-18 10:40:45 +10:00
README.md fix build badge 2021-06-24 09:21:56 +10:00
run Move away from Bazel (#2202) 2022-11-27 15:24:20 +10:00
run.bat Allow using the bundled mpv for testing on Windows 2023-02-16 17:41:25 +10:00
rust-toolchain.toml Update Rust deps (#2332) 2023-01-18 22:24:29 +10:00
SECURITY.md add SECURITY.md 2021-09-22 22:55:19 +10:00
yarn.lock Protobufjs fixed the relative path issue 2023-02-03 09:31:42 +10:00

Anki

Build status

This repo contains the source code for the computer version of Anki.

If you'd like to try development builds of Anki but don't feel comfortable building the code, please see https://betas.ankiweb.net/

For more information on building, please see Development.