fix(search): Lunr result fields highlight
Signed-off-by: Camila Belo <camilaibs@gmail.com>
This commit is contained in:
@@ -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', () => {
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user