feat: jump to search (#2453)

* jump to search init

* support multiple text matching

* search navigation dialog

* remove search text

* typesense support

* typesense support

* add search guard

* use search key check

* minor fix

* minor fix

* fix: clean up jump search state on close

---------

Co-authored-by: Philipinho <16838612+Philipinho@users.noreply.github.com>
This commit is contained in:
Salihu
2026-09-05 16:06:52 +01:00
committed by GitHub
co-authored by Philipinho
parent 6ff8c7cdfe
commit 84e1e56cf6
11 changed files with 401 additions and 36 deletions
@@ -8,6 +8,8 @@ export class SearchResponseDto {
creatorId: string;
rank: number;
highlight: string;
matchedText: string[];
wholeWord: boolean;
createdAt: Date;
updatedAt: Date;
space: Partial<Space>;
+18 -4
View File
@@ -191,11 +191,25 @@ export class SearchService {
//@ts-ignore
const searchResults = results.map((result: SearchResponseDto) => {
if (result.highlight) {
result.highlight = result.highlight
.replace(/\r\n|\r|\n/g, ' ')
.replace(/\s+/g, ' ');
result.wholeWord = true
if (!result.highlight) {
result.matchedText = [];
return result;
}
result.highlight = result.highlight
.replace(/\r\n|\r|\n/g, ' ')
.replace(/\s+/g, ' ');
result.matchedText = [
...new Set(
Array.from(
result.highlight.matchAll(/<b>([^<]*)<\/b>/gi),
(match) => match[1],
),
),
];
return result;
});