From dd9fc0aa9236d3b13d1e0a6453b92900522db1f2 Mon Sep 17 00:00:00 2001 From: "jie.yang" Date: Tue, 14 Oct 2025 20:20:52 +0800 Subject: [PATCH 1/2] fix queryParser. --- packages/common-utils/src/queryParser.ts | 37 ++++++++++++++++++++++-- 1 file changed, 35 insertions(+), 2 deletions(-) diff --git a/packages/common-utils/src/queryParser.ts b/packages/common-utils/src/queryParser.ts index 8f426347f..5b7ce8ab8 100644 --- a/packages/common-utils/src/queryParser.ts +++ b/packages/common-utils/src/queryParser.ts @@ -20,11 +20,12 @@ function decodeSpecialTokens(query: string): string { .replace('http_COLON_//', 'http://') .replace('https_COLON_//', 'https://') .replace(/localhost_COLON_(\d{1,5})/, 'localhost:$1') - .replace(/HDX_COLON/g, ':'); + .replace(/HDX_COLON/g, ':') + .replace(/\\ /g, ' '); } export function parse(query: string): lucene.AST { - return lucene.parse(encodeSpecialTokens(query)); + return lucene.parse(mergeImplicitTerms(encodeSpecialTokens(query))); } const IMPLICIT_FIELD = ''; @@ -801,3 +802,35 @@ export async function genEnglishExplanation(query: string): Promise { return `Message containing ${query}`; } + +const isNodeTerm = (node: any): boolean => { + if (!node) return false; + return typeof (node as any).term === 'string'; +}; + +// Spaces are recognized without the \ character. +// Querying a b is equivalent to querying a\ b. +const mergeImplicitTerms = (node: any): any => { + if (!node) return node; + + const left = mergeImplicitTerms(node.left); + const right = mergeImplicitTerms(node.right); + + if ( + node.operator === '' && + isNodeTerm(left) && + isNodeTerm(right) && + left.field === right.field && + left.field === IMPLICIT_FIELD && + !left.quoted && + !right.quoted + ) { + return { + ...left, + term: `${left.term} ${right.term}`, + quoted: false, + }; + } + + return node; +}; From 3decdbfe6ba5717e43b9ac2080051ef088460a28 Mon Sep 17 00:00:00 2001 From: "jie.yang" Date: Tue, 14 Oct 2025 20:25:33 +0800 Subject: [PATCH 2/2] fix queryParser. --- packages/common-utils/src/queryParser.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/common-utils/src/queryParser.ts b/packages/common-utils/src/queryParser.ts index 5b7ce8ab8..680517c40 100644 --- a/packages/common-utils/src/queryParser.ts +++ b/packages/common-utils/src/queryParser.ts @@ -832,5 +832,9 @@ const mergeImplicitTerms = (node: any): any => { }; } - return node; + return { + ...node, + left, + right, + }; };