Mercurial > dovecot > core-2.2
changeset 13105:e6eac5f1e21b
fts: Convert input text to decomposed titlecase only for Squat backend.
Lucene and Solr can handle case-insensitivity internally.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Tue, 26 Jul 2011 13:38:35 +0300 |
parents | 2224c74b0187 |
children | 87430246c3e1 |
files | src/plugins/fts-squat/fts-backend-squat.c src/plugins/fts/fts-api-private.h src/plugins/fts/fts-build-private.h src/plugins/fts/fts-build.c |
diffstat | 4 files changed, 11 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/src/plugins/fts-squat/fts-backend-squat.c Fri Jul 22 13:52:27 2011 +0300 +++ b/src/plugins/fts-squat/fts-backend-squat.c Tue Jul 26 13:38:35 2011 +0300 @@ -448,7 +448,7 @@ struct fts_backend fts_backend_squat = { .name = "squat", - .flags = 0, + .flags = FTS_BACKEND_FLAG_BUILD_DTCASE, { fts_backend_squat_alloc,
--- a/src/plugins/fts/fts-api-private.h Fri Jul 22 13:52:27 2011 +0300 +++ b/src/plugins/fts/fts-api-private.h Tue Jul 26 13:38:35 2011 +0300 @@ -47,7 +47,10 @@ 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 {
--- a/src/plugins/fts/fts-build-private.h Fri Jul 22 13:52:27 2011 +0300 +++ b/src/plugins/fts/fts-build-private.h Tue Jul 26 13:38:35 2011 +0300 @@ -29,6 +29,7 @@ char *content_type, *content_disposition; unsigned int binary_mime_parts:1; + unsigned int dtcase:1; unsigned int notified:1; unsigned int failed:1; };
--- a/src/plugins/fts/fts-build.c Fri Jul 22 13:52:27 2011 +0300 +++ b/src/plugins/fts/fts-build.c Tue Jul 26 13:38:35 2011 +0300 @@ -125,7 +125,7 @@ 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 @@ 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 @@ (*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;