From cc3f4c12214fbb3d3249e93ca65ca61903f0accd Mon Sep 17 00:00:00 2001 From: Andrew Kingston Date: Mon, 12 Sep 2022 09:01:21 +0100 Subject: [PATCH] Fix client side searching not working due to field prefixes --- packages/frontend-core/src/utils/lucene.js | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/packages/frontend-core/src/utils/lucene.js b/packages/frontend-core/src/utils/lucene.js index 9ed5df3895..21f00e4942 100644 --- a/packages/frontend-core/src/utils/lucene.js +++ b/packages/frontend-core/src/utils/lucene.js @@ -80,6 +80,17 @@ const cleanupQuery = query => { return query } +/** + * Removes a numeric prefix on field names designed to give fields uniqueness + */ +const removeFieldPrefix = field => { + if (field && typeof field === "string" && field.includes(":")) { + return field.split(":")[1] + } else { + return field + } +} + /** * Builds a lucene JSON query from the filter structure generated in the builder * @param filter the builder filter structure @@ -194,7 +205,7 @@ export const runLuceneQuery = (docs, query) => { const filters = Object.entries(query[type] || {}) for (let i = 0; i < filters.length; i++) { const [key, testValue] = filters[i] - const docValue = Helpers.deepGet(doc, key) + const docValue = Helpers.deepGet(doc, removeFieldPrefix(key)) if (failFn(docValue, testValue)) { return false }