]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
fts: Drop fts_no_autofuzzy setting
authorMarco Bettini <marco.bettini@open-xchange.com>
Mon, 27 Nov 2023 13:16:38 +0000 (13:16 +0000)
committerAki Tuomi <aki.tuomi@open-xchange.com>
Wed, 12 Feb 2025 10:34:11 +0000 (12:34 +0200)
src/plugins/fts-flatcurve/fts-backend-flatcurve.c
src/plugins/fts-solr/fts-backend-solr.c
src/plugins/fts/fts-api.h
src/plugins/fts/fts-storage.c

index f8a651596a2be1e406b86441690373c36c87ba79..110c499dd1794020321bad60cf8722a228d4fa11 100644 (file)
@@ -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;
index 0ad06e947ecff0f900512b697e89670d25261581..cc153de588e0ac0b7cc7fe384f721459a463ce1a 100644 (file)
@@ -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.. */
index 1ac6ddb5044d053811bf3ecfdca45c81572bfe68..270b88ed871026d3177deaa43948e847a6e6fc7c 100644 (file)
@@ -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 {
index 7bd32fd891910dc24bbeced4be1344128f150cce..d041409d58f9342d092742f3ddbd6b50de47660c 100644 (file)
@@ -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)