[Dovecot] fts-lucene vs SEARCH HEADER
Matthew Powell
matthew at atom.net
Wed Jul 25 05:39:55 EEST 2012
Hello.
This is in Dovecot 2.1.7 on Linux x86, but it looks as though 2.1.8 has the same issue. I'm using fts-lucene. SEARCH HEADER TO returns no results, but SEARCH TO works:
B SEARCH TO TEST
* SEARCH 1 2 3 4 5 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 24 26 27 28 29 31
B OK Search completed (0.000 secs).
C SEARCH HEADER TO TEST
* SEARCH
C OK Search completed (0.000 secs).
Without FTS enabled, both forms of the query work.
It looks as though the header names are indexed in lower case. But Dovecot is passing the header name to the backend in upper case when SEARCH HEADER is used.
I'm not sure whether this is the *right* fix, but lower-casing the header name in lucene-wrapper.cc seems to fix the problem:
--- dovecot-2.1.7-clean/src/plugins/fts-lucene/lucene-wrapper.cc 2011-12-13 06:35:29.000000000 -0500
+++ dovecot-2.1.7/src/plugins/fts-lucene/lucene-wrapper.cc 2012-07-24 14:03:14.000000000 -0400
@@ -1094,7 +1094,7 @@
return false;
q = lucene_get_query(index,
- t_lucene_utf8_to_tchar(index, arg->hdr_field_name, FALSE),
+ t_lucene_utf8_to_tchar(index, t_str_lcase(arg->hdr_field_name), FALSE),
arg);
break;
default:
Now:
B SEARCH TO TEST
* SEARCH 1 2 3 4 5 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 24 26 27 28 29 31
B OK Search completed (0.000 secs).
C SEARCH HEADER TO TEST
* SEARCH 1 2 3 4 5 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 24 26 27 28 29 31
C OK Search completed (0.000 secs).
--
Matthew Powell matthew at atom.net
More information about the dovecot
mailing list