From 2575fcf835e0649b741bb466b50566559944af87 Mon Sep 17 00:00:00 2001 From: mario_ma Date: Fri, 21 Jul 2023 15:34:01 +0800 Subject: [PATCH 1/3] Update README.md Signed-off-by: mario_ma --- plugins/todo-backend/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/todo-backend/README.md b/plugins/todo-backend/README.md index 4686c2d39f..0aec607b93 100644 --- a/plugins/todo-backend/README.md +++ b/plugins/todo-backend/README.md @@ -25,7 +25,7 @@ export default async function createPlugin( }); const catalogClient = new CatalogClient({ - discoveryApi: discovery, + discoveryApi: env.discovery, }); const todoService = new TodoReaderService({ From 70d4f7b0ede16e6e2339064f668fdade43a2de8e Mon Sep 17 00:00:00 2001 From: Camila Belo Date: Fri, 21 Jul 2023 09:46:51 +0200 Subject: [PATCH 2/3] fix(search): Lunr result fields highlight Signed-off-by: Camila Belo --- .../src/engines/LunrSearchEngine.test.ts | 29 +++++++++++++++++++ .../src/engines/LunrSearchEngine.ts | 9 ++++-- 2 files changed, 36 insertions(+), 2 deletions(-) diff --git a/plugins/search-backend-node/src/engines/LunrSearchEngine.test.ts b/plugins/search-backend-node/src/engines/LunrSearchEngine.test.ts index 27cd65d63b..55c18cd6fc 100644 --- a/plugins/search-backend-node/src/engines/LunrSearchEngine.test.ts +++ b/plugins/search-backend-node/src/engines/LunrSearchEngine.test.ts @@ -1145,6 +1145,35 @@ describe('parseHighlightFields', () => { bar: 'ghi <>jkl', }); }); + + it('should filter out non array positions', () => { + expect( + parseHighlightFields({ + preTag: '<>', + postTag: '', + doc: { foo: 'abc def', bar: 'ghi jkl' }, + positionMetadata: { + test: { + foo: { + // invalid position item + position: [null as unknown as number[]], + }, + }, + anotherTest: { + foo: { + position: [[4, 3]], + }, + bar: { + position: [[4, 3]], + }, + }, + }, + }), + ).toEqual({ + foo: 'abc <>def', + bar: 'ghi <>jkl', + }); + }); }); describe('stopword testing', () => { diff --git a/plugins/search-backend-node/src/engines/LunrSearchEngine.ts b/plugins/search-backend-node/src/engines/LunrSearchEngine.ts index b69b5ea863..ae5a541e81 100644 --- a/plugins/search-backend-node/src/engines/LunrSearchEngine.ts +++ b/plugins/search-backend-node/src/engines/LunrSearchEngine.ts @@ -309,8 +309,13 @@ export function parseHighlightFields({ const highlightFieldPositions = Object.values(positionMetadata).reduce( (fieldPositions, metadata) => { Object.keys(metadata).map(fieldKey => { - fieldPositions[fieldKey] = fieldPositions[fieldKey] ?? []; - fieldPositions[fieldKey].push(...metadata[fieldKey].position); + const validFieldMetadataPositions = metadata[ + fieldKey + ]?.position?.filter(position => Array.isArray(position)); + if (validFieldMetadataPositions.length) { + fieldPositions[fieldKey] = fieldPositions[fieldKey] ?? []; + fieldPositions[fieldKey].push(...validFieldMetadataPositions); + } }); return fieldPositions; From e3e9bc10298b7b2976019cbd25f5f61cd9cc466b Mon Sep 17 00:00:00 2001 From: Camila Belo Date: Fri, 21 Jul 2023 10:07:59 +0200 Subject: [PATCH 3/3] docs(search): add changeset file Signed-off-by: Camila Belo --- .changeset/search-donuts-wash.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/search-donuts-wash.md diff --git a/.changeset/search-donuts-wash.md b/.changeset/search-donuts-wash.md new file mode 100644 index 0000000000..2fa3325761 --- /dev/null +++ b/.changeset/search-donuts-wash.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-search-backend-node': patch +--- + +Fix Lunr search engine highlight by ignoring invalid metadata positions.