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;
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;
}
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;
}
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.. */
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 {
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)
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)