]> git.evergreen-ils.org Git - working/Evergreen.git/commit
LP#1931162: DYM needs some situational optimization user/slink/lp1931162_dym_situational_optimization_signoff
authorMike Rylander <mrylander@gmail.com>
Mon, 7 Jun 2021 19:57:32 +0000 (15:57 -0400)
committerShula Link <slink@gchrl.org>
Thu, 12 Aug 2021 16:46:20 +0000 (12:46 -0400)
commit96f05bd08b1ce77dc748b2d20e8340682bf89087
treebe605e7e4fce621c4aa9a6268ed3172c4f535f23
parent203fb1b2cf592d2123972964f2ace7cf1556c308
LP#1931162: DYM needs some situational optimization

For some data sets and some queries the Did You Mean search suggestion
logic can be much too slow. This is mainly in cases where a "misspelled"
word of sufficient length greater than the symspell prefix length is
checked against many short prefixes that have many long suggestions
attached to them.

This commit optimizes for that case in particular by testing the length
of suggestions and prefix keys against the user input to avoid
unnecessary tests.  Futher, it captures the edit distance of suggestions
that pass that test in-line, avoiding expensive retesting, and caches
the short-cutoff edit distance when in low-verbosity mode to avoid
future different-but-not-too-different suggestions coming from the same
prefix key.

It additionally provides a general optimization by batching the capture
of suggest counts to avoid per-suggestion secondary lookups, and a
micro-optimization of ordering suggestions by length at distance cache
time.

Signed-off-by: Mike Rylander <mrylander@gmail.com>
Signed-off-by: Shula Link <slink@gchrl.org>
Open-ILS/src/sql/Pg/300.schema.staged_search.sql
Open-ILS/src/sql/Pg/upgrade/XXXX.function.did_you_mean_optimization.sql [new file with mode: 0644]