{ .type = SET_FILTER_NAME, .key = FTS_FILTER_DECODER_TIKA },
DEF(STR, decoder_tika_url),
DEF(STR, driver),
- DEF(ENUM, enforced),
+ DEF(ENUM, search_add_missing),
+ DEF(BOOL, search_read_fallback),
DEF(BOOLLIST,header_excludes),
DEF(BOOLLIST,header_includes),
DEF(TIME, index_timeout),
/* <settings checks> */
-#define FTS_ENFORCE_KEYWORD_NO "no"
-#define FTS_ENFORCE_KEYWORD_YES "yes"
-#define FTS_ENFORCE_KEYWORD_BODY "body"
+#define FTS_SEARCH_ADD_MISSING_BODY_SEARCH_ONLY "body-search-only"
#define FTS_DECODER_KEYWORD_NONE ""
#define FTS_DECODER_KEYWORD_TIKA "tika"
.decoder_script_socket_path = "",
.decoder_tika_url = "",
.driver = "",
- .enforced = FTS_ENFORCE_KEYWORD_NO
- ":"FTS_ENFORCE_KEYWORD_YES
- ":"FTS_ENFORCE_KEYWORD_BODY,
+ .search_add_missing = FTS_SEARCH_ADD_MISSING_BODY_SEARCH_ONLY":yes",
+ .search_read_fallback = TRUE,
+
.index_timeout = 0,
.message_max_size = SET_SIZE_UNLIMITED,
};
return fts_settings_parse_enum(table, key);
}
-static enum fts_enforced fts_settings_parse_enforced(const char *key)
-{
- static struct fts_settings_enum_table table[] = {
- { FTS_ENFORCE_KEYWORD_NO, FTS_ENFORCED_NO },
- { FTS_ENFORCE_KEYWORD_YES, FTS_ENFORCED_YES },
- { FTS_ENFORCE_KEYWORD_BODY, FTS_ENFORCED_BODY },
- { NULL, 0 }
- };
- return fts_settings_parse_enum(table, key);
-}
-
static bool fts_settings_check_decoder(struct fts_settings *set,
const char **error_r)
{
const char **error_r)
{
struct fts_settings *set = _set;
- set->parsed_enforced = fts_settings_parse_enforced(set->enforced);
+ set->parsed_search_add_missing_body_only =
+ strcmp(set->search_add_missing,
+ FTS_SEARCH_ADD_MISSING_BODY_SEARCH_ONLY) == 0;
set->parsed_decoder_driver = fts_settings_parse_decoder(set->decoder_driver);
return fts_settings_check_decoder(set, error_r);
}
#define FTS_FILTER "fts"
#define FTS_FILTER_DECODER_TIKA "fts_decoder_tika"
-enum fts_enforced {
- FTS_ENFORCED_NO,
- FTS_ENFORCED_YES,
- FTS_ENFORCED_BODY,
-};
enum fts_decoder {
FTS_DECODER_NO,
FTS_DECODER_TIKA,
const char *decoder_script_socket_path;
const char *decoder_tika_url;
const char *driver;
- const char *enforced;
+ const char *search_add_missing;
+ bool search_read_fallback;
unsigned int autoindex_max_recent_msgs;
unsigned int index_timeout;
uoff_t message_max_size;
bool autoindex;
- enum fts_enforced parsed_enforced;
enum fts_decoder parsed_decoder_driver;
+ bool parsed_search_add_missing_body_only;
};
extern const struct setting_parser_info fts_setting_parser_info;
ft->scores = fctx->scores;
ft->scores->refcount++;
- if (fbox->set->parsed_enforced == FTS_ENFORCED_YES ||
+ if (!fbox->set->parsed_search_add_missing_body_only ||
fts_want_build_args(args->args))
fts_try_build_init(ctx, fctx);
else
}
}
if (fctx != NULL && !fctx->fts_lookup_success &&
- fbox->set->parsed_enforced != FTS_ENFORCED_NO)
+ !fbox->set->search_read_fallback)
return FALSE;
return fbox->module_ctx.super.
ret = -1;
}
else if (!fctx->fts_lookup_success &&
- fbox->set->parsed_enforced != FTS_ENFORCED_NO) {
+ !fbox->set->search_read_fallback) {
/* FTS lookup failed and we didn't want to fallback to
opening all the mails and searching manually */
mail_storage_set_internal_error(box->storage);