From 3a601d76ce23d77a37f77fb18bb982f39be15abc Mon Sep 17 00:00:00 2001 From: Andrew Kingston Date: Thu, 29 Apr 2021 14:55:51 +0100 Subject: [PATCH] Support NOT lucene queries and escape whitespace --- packages/server/src/api/controllers/search/utils.js | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/packages/server/src/api/controllers/search/utils.js b/packages/server/src/api/controllers/search/utils.js index d3ffb26be7..e8e26c813b 100644 --- a/packages/server/src/api/controllers/search/utils.js +++ b/packages/server/src/api/controllers/search/utils.js @@ -34,6 +34,7 @@ class QueryBuilder { fuzzy: {}, range: {}, equal: {}, + notEqual: {}, ...base, } this.limit = 50 @@ -73,6 +74,11 @@ class QueryBuilder { return this } + addNotEqual(key, value) { + this.query.notEqual[key] = value + return this + } + addTable(tableId) { this.query.equal.tableId = tableId return this @@ -85,7 +91,7 @@ class QueryBuilder { if (output.length !== 0) { output += " AND " } - output += queryFn(key, value) + output += queryFn(key, value).replace(/ /, "\\ ") } } @@ -104,6 +110,9 @@ class QueryBuilder { if (this.query.equal) { build(this.query.equal, (key, value) => `${key}:${value}`) } + if (this.query.notEqual) { + build(this.query.notEqual, (key, value) => `!${key}:${value}`) + } if (rawQuery) { output = output.length === 0 ? rawQuery : `&${rawQuery}` }