From fa2c7e491476e51ff9f4651b999e1a600dcd713d Mon Sep 17 00:00:00 2001 From: lcomplete Date: Tue, 28 Apr 2026 18:51:30 +0800 Subject: [PATCH] feat(search): support quoted phrases in advanced search syntax Add quoted-string tokenization to search so collection names and keywords with spaces can be wrapped in double quotes. Introduce splitSearchTokens and extractAdvancedSearchKeyword helpers on the server side, and a formatAdvancedSearchText utility on the client to auto-quote values that contain spaces. Update apple-touch-icon and web manifest references. Co-Authored-By: Claude Sonnet 4.6 --- app/client/public/apple-touch-icon.png | Bin 10548 -> 6539 bytes app/client/public/index.html | 4 +- app/client/src/domain/searchSyntax.test.ts | 17 +++++ app/client/src/domain/searchSyntax.ts | 18 +++++ app/client/src/pages/CollectionList.tsx | 3 +- .../huntly/server/service/LuceneService.java | 71 ++++++++++++++++-- .../LuceneServiceSearchSyntaxTest.java | 58 ++++++++++++++ 7 files changed, 162 insertions(+), 9 deletions(-) create mode 100644 app/client/src/domain/searchSyntax.test.ts create mode 100644 app/client/src/domain/searchSyntax.ts create mode 100644 app/server/huntly-server/src/test/java/com/huntly/server/service/LuceneServiceSearchSyntaxTest.java diff --git a/app/client/public/apple-touch-icon.png b/app/client/public/apple-touch-icon.png index 8ba4c8403d3abec8b44bc7b2fe517fe569ee7a20..e893083ac40aa78ce7e0062064ddfffc55eda663 100644 GIT binary patch literal 6539 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 literal 10548 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 diff --git a/app/client/public/index.html b/app/client/public/index.html index 37f2e155..ef2255f5 100644 --- a/app/client/public/index.html +++ b/app/client/public/index.html @@ -11,12 +11,12 @@ name="description" content="Luck Info Hunter" /> - + - +