changeset 19649:096ae156e688

fts-solr: Changed default operator to AND to fix multi-word queries. 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.
author Timo Sirainen <timo.sirainen@dovecot.fi>
date Wed, 27 Jan 2016 00:35:34 +0200
parents 40298bc52160
children 44b26f969840
files src/plugins/fts-solr/fts-backend-solr-old.c src/plugins/fts-solr/fts-backend-solr.c
diffstat 2 files changed, 4 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/src/plugins/fts-solr/fts-backend-solr-old.c	Tue Jan 26 23:51:16 2016 +0200
+++ b/src/plugins/fts-solr/fts-backend-solr-old.c	Wed Jan 27 00:35:34 2016 +0200
@@ -699,7 +699,7 @@
 				&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_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)) {
--- a/src/plugins/fts-solr/fts-backend-solr.c	Tue Jan 26 23:51:16 2016 +0200
+++ b/src/plugins/fts-solr/fts-backend-solr.c	Wed Jan 27 00:35:34 2016 +0200
@@ -822,7 +822,7 @@
 	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 @@
 	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)) {