From 501e89367602b85f536ad740544aebd8147f8ac1 Mon Sep 17 00:00:00 2001 From: Vignesh Natarajan Date: Sun, 15 Feb 2026 19:17:03 -0800 Subject: [PATCH] fix (memory/search): support unicode tokens in FTS query builder --- src/memory/hybrid.test.ts | 2 ++ src/memory/hybrid.ts | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/memory/hybrid.test.ts b/src/memory/hybrid.test.ts index 7105e9ecf2..6e9d8f4264 100644 --- a/src/memory/hybrid.test.ts +++ b/src/memory/hybrid.test.ts @@ -5,6 +5,8 @@ describe("memory hybrid helpers", () => { it("buildFtsQuery tokenizes and AND-joins", () => { expect(buildFtsQuery("hello world")).toBe('"hello" AND "world"'); expect(buildFtsQuery("FOO_bar baz-1")).toBe('"FOO_bar" AND "baz" AND "1"'); + expect(buildFtsQuery("金银价格")).toBe('"金银价格"'); + expect(buildFtsQuery("価格 2026年")).toBe('"価格" AND "2026年"'); expect(buildFtsQuery(" ")).toBeNull(); }); diff --git a/src/memory/hybrid.ts b/src/memory/hybrid.ts index 1dd7c9fdab..cea9f26041 100644 --- a/src/memory/hybrid.ts +++ b/src/memory/hybrid.ts @@ -23,7 +23,7 @@ export type HybridKeywordResult = { export function buildFtsQuery(raw: string): string | null { const tokens = raw - .match(/[A-Za-z0-9_]+/g) + .match(/[\p{L}\p{N}_]+/gu) ?.map((t) => t.trim()) .filter(Boolean) ?? []; if (tokens.length === 0) {