diff --git a/src/scripts/search/kmp.ts b/src/scripts/search/kmp.ts index dbc58d67..03ca65f7 100644 --- a/src/scripts/search/kmp.ts +++ b/src/scripts/search/kmp.ts @@ -73,11 +73,12 @@ export class SearchByKMP implements Searcher { const field = this._fields[k]; if (field in obj && kmpSearch(needle, (obj[field] as string).toLowerCase()) !== -1) { results.push({ - item: obj[field], + item: obj, score: count, rank: count + 1, }); count++; + break; } } } diff --git a/test/scripts/search/index.test.ts b/test/scripts/search/index.test.ts index 2d4ac834..2277d5b9 100644 --- a/test/scripts/search/index.test.ts +++ b/test/scripts/search/index.test.ts @@ -118,7 +118,15 @@ describe('search', () => { }); it('label suffix', () => { const results = searcher.search(`${haystack.length - 1}`); - expect(results.length).eq(2); + expect(results.length).eq(1); + }); + it('search order', () => { + const results = searcher.search('label'); + + expect(results.length).eq(haystack.length); + haystack.forEach((value, index) => { + expect(results[index].item.value).eq(value.value); + }); }); }); @@ -141,5 +149,13 @@ describe('search', () => { const results = searcher.search(`${haystack.length - 1}`); expect(results.length).eq(0); }); + it('search order', () => { + const results = searcher.search('label'); + + expect(results.length).eq(haystack.length); + haystack.forEach((value, index) => { + expect(results[index].item.value).eq(value.value); + }); + }); }); });