From: Timo Sirainen Date: Tue, 26 Jul 2011 10:38:35 +0000 (+0300) Subject: fts: Convert input text to decomposed titlecase only for Squat backend. X-Git-Tag: 2.1.alpha1~218 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0fbea4dd37f44d2fcfcd4a36a36a6e545696f0e6;p=thirdparty%2Fdovecot%2Fcore.git fts: Convert input text to decomposed titlecase only for Squat backend. Lucene and Solr can handle case-insensitivity internally. --- diff --git a/src/plugins/fts-squat/fts-backend-squat.c b/src/plugins/fts-squat/fts-backend-squat.c index c5a6839360..27de6703b0 100644 --- a/src/plugins/fts-squat/fts-backend-squat.c +++ b/src/plugins/fts-squat/fts-backend-squat.c @@ -448,7 +448,7 @@ fts_backend_squat_lookup(struct fts_backend *_backend, struct mailbox *box, struct fts_backend fts_backend_squat = { .name = "squat", - .flags = 0, + .flags = FTS_BACKEND_FLAG_BUILD_DTCASE, { fts_backend_squat_alloc, diff --git a/src/plugins/fts/fts-api-private.h b/src/plugins/fts/fts-api-private.h index 50c0a542d7..50a30c6201 100644 --- a/src/plugins/fts/fts-api-private.h +++ b/src/plugins/fts/fts-api-private.h @@ -47,7 +47,10 @@ struct fts_backend_vfuncs { enum fts_backend_flags { /* Backend supports indexing binary MIME parts */ - FTS_BACKEND_FLAG_BINARY_MIME_PARTS = 0x01 + FTS_BACKEND_FLAG_BINARY_MIME_PARTS = 0x01, + /* Send built text to backend as decomposed titlecase rather than + preserving original case */ + FTS_BACKEND_FLAG_BUILD_DTCASE = 0x02 }; struct fts_backend { diff --git a/src/plugins/fts/fts-build-private.h b/src/plugins/fts/fts-build-private.h index 7a1fd3f3a3..1db6fc6c74 100644 --- a/src/plugins/fts/fts-build-private.h +++ b/src/plugins/fts/fts-build-private.h @@ -29,6 +29,7 @@ struct fts_storage_build_context { char *content_type, *content_disposition; unsigned int binary_mime_parts:1; + unsigned int dtcase:1; unsigned int notified:1; unsigned int failed:1; }; diff --git a/src/plugins/fts/fts-build.c b/src/plugins/fts/fts-build.c index 97310b8420..6f842904c6 100644 --- a/src/plugins/fts/fts-build.c +++ b/src/plugins/fts/fts-build.c @@ -125,7 +125,7 @@ static bool fts_build_body_begin(struct fts_storage_build_context *ctx) int fts_build_mail(struct fts_storage_build_context *ctx, struct mail *mail) { - enum message_decoder_flags decoder_flags = MESSAGE_DECODER_FLAG_DTCASE; + enum message_decoder_flags decoder_flags = 0; struct istream *input; struct message_parser_ctx *parser; struct message_decoder_context *decoder; @@ -144,7 +144,8 @@ int fts_build_mail(struct fts_storage_build_context *ctx, struct mail *mail) MESSAGE_HEADER_PARSER_FLAG_CLEAN_ONELINE, 0); - + if (ctx->dtcase) + decoder_flags |= MESSAGE_DECODER_FLAG_DTCASE; if (ctx->binary_mime_parts) decoder_flags |= MESSAGE_DECODER_FLAG_RETURN_BINARY; decoder = message_decoder_init(decoder_flags); @@ -280,6 +281,8 @@ int fts_build_init(struct fts_backend *backend, struct mailbox *box, (*build_ctx_r)->box = box; (*build_ctx_r)->v = *v; + (*build_ctx_r)->dtcase = + (backend->flags & FTS_BACKEND_FLAG_BUILD_DTCASE) != 0; (*build_ctx_r)->binary_mime_parts = (backend->flags & FTS_BACKEND_FLAG_BINARY_MIME_PARTS) != 0; return 1;