]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
fts: Convert input text to decomposed titlecase only for Squat backend.
authorTimo Sirainen <tss@iki.fi>
Tue, 26 Jul 2011 10:38:35 +0000 (13:38 +0300)
committerTimo Sirainen <tss@iki.fi>
Tue, 26 Jul 2011 10:38:35 +0000 (13:38 +0300)
Lucene and Solr can handle case-insensitivity internally.

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

index c5a683936050324d7ef54ee1cb5c8f4f17fbc431..27de6703b08f462507c906b5fed785840dfd6ba8 100644 (file)
@@ -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,
index 50c0a542d7c258df0dc74ff1c254959bad4e5815..50a30c620170a88dda65b0a0239bb60d059575bf 100644 (file)
@@ -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 {
index 7a1fd3f3a3d44c93b7c6f9013d849f4b3cdf145c..1db6fc6c74d9b7cf0bec71f5252d338d9aee750a 100644 (file)
@@ -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;
 };
index 97310b8420c027d5d25b91c9bf1a6d3207bda5a8..6f842904c607ed76461302cdfd0d9559067815aa 100644 (file)
@@ -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;