]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
fts-solr: Changed default operator to AND to fix multi-word queries.
authorTimo Sirainen <timo.sirainen@dovecot.fi>
Tue, 26 Jan 2016 22:35:34 +0000 (00:35 +0200)
committerTimo Sirainen <timo.sirainen@dovecot.fi>
Tue, 26 Jan 2016 22:35:34 +0000 (00:35 +0200)
Previously for example searching from:foo@example.com was expanded to
foo OR example OR com. Now it's foo AND example AND com, which makes a lot
more sense.

src/plugins/fts-solr/fts-backend-solr-old.c
src/plugins/fts-solr/fts-backend-solr.c

index 719db4e94bbe0f4122619a004a917fb9022ee22a..c3776441423c8db3ded1381db93d5e78d6b30bbf 100644 (file)
@@ -699,7 +699,7 @@ fts_backend_solr_lookup(struct fts_backend *_backend, struct mailbox *box,
                                &status);
 
        str = t_str_new(256);
-       str_printfa(str, "fl=uid,score&rows=%u&sort=uid+asc&q=",
+       str_printfa(str, "fl=uid,score&rows=%u&sort=uid+asc&q={!lucene+q.op%%3dAND}",
                    status.uidnext);
 
        if (!solr_add_definite_query_args(str, args, and_args)) {
@@ -832,7 +832,7 @@ fts_backend_solr_lookup_multi(struct fts_backend *_backend,
        fts_solr_set_default_ns(backend);
 
        str = t_str_new(256);
-       str_printfa(str, "fl=ns,box,uidv,uid,score&rows=%u&sort=box+asc,uid+asc&q=",
+       str_printfa(str, "fl=ns,box,uidv,uid,score&rows=%u&sort=box+asc,uid+asc&q={!lucene+q.op%%3dAND}",
                    SOLR_MAX_MULTI_ROWS);
 
        if (solr_add_definite_query_args(str, args, and_args)) {
index 949db5610e2a97b6d5372792bed8d841cc5410ef..3c2da2f73ab5f62b2bcf2bdecabe955250edf6b6 100644 (file)
@@ -822,7 +822,7 @@ fts_backend_solr_lookup(struct fts_backend *_backend, struct mailbox *box,
        mailbox_get_open_status(box, STATUS_UIDNEXT, &status);
 
        str = t_str_new(256);
-       str_printfa(str, "fl=uid,score&rows=%u&sort=uid+asc&q=",
+       str_printfa(str, "fl=uid,score&rows=%u&sort=uid+asc&q={!lucene+q.op%%3dAND}",
                    status.uidnext);
        prefix_len = str_len(str);
 
@@ -931,7 +931,7 @@ fts_backend_solr_lookup_multi(struct fts_backend *backend,
        string_t *str;
 
        str = t_str_new(256);
-       str_printfa(str, "fl=box,uid,score&rows=%u&sort=box+asc,uid+asc&q=",
+       str_printfa(str, "fl=box,uid,score&rows=%u&sort=box+asc,uid+asc&q={!lucene+q.op%%3dAND}",
                    SOLR_MAX_MULTI_ROWS);
 
        if (solr_add_definite_query_args(str, args, and_args)) {