From 8745b7796510c6a805cd04df2991784e1de22274 Mon Sep 17 00:00:00 2001 From: Marco Bettini Date: Mon, 27 Nov 2023 13:16:38 +0000 Subject: [PATCH] fts: Drop fts_no_autofuzzy setting --- .../fts-flatcurve/fts-backend-flatcurve.c | 3 +-- src/plugins/fts-solr/fts-backend-solr.c | 14 +++-------- src/plugins/fts/fts-api.h | 3 --- src/plugins/fts/fts-storage.c | 25 ------------------- 4 files changed, 5 insertions(+), 40 deletions(-) diff --git a/src/plugins/fts-flatcurve/fts-backend-flatcurve.c b/src/plugins/fts-flatcurve/fts-backend-flatcurve.c index f8a651596a..110c499dd1 100644 --- a/src/plugins/fts-flatcurve/fts-backend-flatcurve.c +++ b/src/plugins/fts-flatcurve/fts-backend-flatcurve.c @@ -594,8 +594,7 @@ fts_backend_flatcurve_lookup_multi(struct fts_backend *_backend, break; } - if ((query->maybe) || - ((flags & FTS_LOOKUP_FLAG_NO_AUTO_FUZZY) != 0)) + if (query->maybe) r->maybe_uids = fresult->uids; else r->definite_uids = fresult->uids; diff --git a/src/plugins/fts-solr/fts-backend-solr.c b/src/plugins/fts-solr/fts-backend-solr.c index 0ad06e947e..cc153de588 100644 --- a/src/plugins/fts-solr/fts-backend-solr.c +++ b/src/plugins/fts-solr/fts-backend-solr.c @@ -853,9 +853,7 @@ fts_backend_solr_lookup(struct fts_backend *_backend, struct mailbox *box, prefix_len = str_len(str); if (solr_add_definite_query_args(str, args, and_args)) { - ARRAY_TYPE(seq_range) *uids_arr = - (flags & FTS_LOOKUP_FLAG_NO_AUTO_FUZZY) == 0 ? - &result->definite_uids : &result->maybe_uids; + ARRAY_TYPE(seq_range) *uids_arr = &result->definite_uids; if (solr_search(_backend, str, box_guid, uids_arr, &result->scores) < 0) return -1; @@ -872,8 +870,7 @@ fts_backend_solr_lookup(struct fts_backend *_backend, struct mailbox *box, static int solr_search_multi(struct fts_backend *_backend, string_t *str, - struct mailbox *const boxes[], enum fts_lookup_flags flags, - struct fts_multi_result *result) + struct mailbox *const boxes[], struct fts_multi_result *result) { struct event *event = _backend->ns->list->event; struct solr_fts_backend *backend = (struct solr_fts_backend *)_backend; @@ -936,10 +933,7 @@ solr_search_multi(struct fts_backend *_backend, string_t *str, } fts_result = array_append_space(&fts_results); fts_result->box = box; - if ((flags & FTS_LOOKUP_FLAG_NO_AUTO_FUZZY) == 0) - fts_result->definite_uids = solr_results[i]->uids; - else - fts_result->maybe_uids = solr_results[i]->uids; + fts_result->definite_uids = solr_results[i]->uids; fts_result->scores = solr_results[i]->scores; fts_result->scores_sorted = TRUE; } @@ -964,7 +958,7 @@ fts_backend_solr_lookup_multi(struct fts_backend *backend, SOLR_MAX_MULTI_ROWS); if (solr_add_definite_query_args(str, args, and_args)) { - if (solr_search_multi(backend, str, boxes, flags, result) < 0) + if (solr_search_multi(backend, str, boxes, result) < 0) return -1; } /* FIXME: maybe_uids could be handled also with some more work.. */ diff --git a/src/plugins/fts/fts-api.h b/src/plugins/fts/fts-api.h index 1ac6ddb504..270b88ed87 100644 --- a/src/plugins/fts/fts-api.h +++ b/src/plugins/fts/fts-api.h @@ -13,9 +13,6 @@ struct fts_backend; enum fts_lookup_flags { /* Specifies if the args should be ANDed or ORed together. */ FTS_LOOKUP_FLAG_AND_ARGS = 0x01, - /* Require exact matching for non-fuzzy search args by returning all - such matches as maybe_uids instead of definite_uids */ - FTS_LOOKUP_FLAG_NO_AUTO_FUZZY = 0x02 }; enum fts_backend_build_key_type { diff --git a/src/plugins/fts/fts-storage.c b/src/plugins/fts/fts-storage.c index 7bd32fd891..d041409d58 100644 --- a/src/plugins/fts/fts-storage.c +++ b/src/plugins/fts/fts-storage.c @@ -161,25 +161,6 @@ static bool fts_want_build_args(const struct mail_search_arg *args) return FALSE; } -static bool fts_args_have_fuzzy(const struct mail_search_arg *args) -{ - for (; args != NULL; args = args->next) { - if (args->fuzzy) - return TRUE; - switch (args->type) { - case SEARCH_OR: - case SEARCH_SUB: - case SEARCH_INTHREAD: - if (fts_args_have_fuzzy(args->value.subargs)) - return TRUE; - break; - default: - break; - } - } - return FALSE; -} - static enum fts_enforced fts_enforced_parse(const char *str) { if (str == NULL || strcmp(str, "no") == 0) @@ -229,12 +210,6 @@ fts_mailbox_search_init(struct mailbox_transaction_context *t, i_array_init(&fctx->scores->score_map, 64); MODULE_CONTEXT_SET(ctx, fts_storage_module, fctx); - /* FIXME: we'll assume that all the args are fuzzy. not good, - but would require much more work to fix it. */ - if (!fts_args_have_fuzzy(args->args) && - mail_user_plugin_getenv_bool(t->box->storage->user, - "fts_no_autofuzzy")) - fctx->flags |= FTS_LOOKUP_FLAG_NO_AUTO_FUZZY; /* transaction contains the last search's scores. they can be queried later with mail_get_special() */ if (ft->scores != NULL) -- 2.47.3