From fc2d8452b558c92279dd3049f061825b32b23ee7 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Fri, 10 Apr 2026 20:31:23 +0300 Subject: [PATCH] feat(search): clarify error message for full-text search after expressions --- apps/server/src/services/search/services/parse.ts | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/apps/server/src/services/search/services/parse.ts b/apps/server/src/services/search/services/parse.ts index 504eeb4bea..e4721feab4 100644 --- a/apps/server/src/services/search/services/parse.ts +++ b/apps/server/src/services/search/services/parse.ts @@ -1,5 +1,3 @@ - - import { dayjs } from "@triliumnext/commons"; import { removeDiacritic } from "../../utils.js"; @@ -441,7 +439,13 @@ function getExpression(tokens: TokenData[], searchContext: SearchContext, level } else if (isOperator({ token })) { searchContext.addError(`Misplaced or incomplete expression "${token}"`); } else { - searchContext.addError(`Unrecognized expression "${token}"`); + // Check if this looks like a fulltext search term placed after attribute filters + const looksLikeFulltext = !token.startsWith("#") && !token.startsWith("~") && !token.startsWith("note."); + if (looksLikeFulltext) { + searchContext.addError(`"${token}" is not a valid expression. If you want to search for text, place it before attribute filters (e.g., "${token} #label" instead of "#label ${token}").`); + } else { + searchContext.addError(`Unrecognized expression "${token}"`); + } } if (!op && expressions.length > 1) {