From b95a98c41e8aa4ed0b8be33c0439f48e3f8693d5 Mon Sep 17 00:00:00 2001 From: Rishi Ghan Date: Fri, 24 Dec 2021 17:09:07 -0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=94=A7=20Flattened=20the=20array=20of=20v?= =?UTF-8?q?olumes=20returned=20from=20the=20recursive=20search=20call=20to?= =?UTF-8?q?=20CV?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- services/comicvine.service.ts | 3 +-- utils/searchmatchscorer.utils.ts | 29 ++++++++++++++++++++--------- 2 files changed, 21 insertions(+), 11 deletions(-) diff --git a/services/comicvine.service.ts b/services/comicvine.service.ts index 9e99140..4a0360e 100644 --- a/services/comicvine.service.ts +++ b/services/comicvine.service.ts @@ -191,14 +191,13 @@ export default class ComicVineService extends Service { output.push(...data.results); // 1a. Run the current batch of volumes through the matcher - // Check for: issue year falling in the range of the volume run rankVolumes(output, params.scorerConfiguration); currentPage += 1; params.page = currentPage; console.log(`Fetching results for page ${currentPage}...`); return await this.fetchVolumesFromCV(params, output); } else { - return output; + return { ...output }; } }, }, diff --git a/utils/searchmatchscorer.utils.ts b/utils/searchmatchscorer.utils.ts index a1b40ea..9dbc1f4 100644 --- a/utils/searchmatchscorer.utils.ts +++ b/utils/searchmatchscorer.utils.ts @@ -93,28 +93,39 @@ export const rankVolumes = (volumes: any, scorerConfiguration: any) => { scorerConfiguration.searchParams.searchTerms.number, 10 ); - let count = 0; const issueYear = parseISO( scorerConfiguration.searchParams.searchTerms.year ); volumes.map(async (volume: any, idx: number) => { - const volumeStartYear = parseISO(volume.start_year); - const firstIssueNumber = parseInt(volume.first_issue.issue_number, 10); - const lastIssueNumber = parseInt(volume.last_issue.issue_number, 10); - const issueNameMatchScore = stringSimilarity.compareTwoStrings(scorerConfiguration.searchParams.searchTerms.name, volume.name); + const volumeStartYear = !isNil(volume.start_year) + ? parseISO(volume.start_year) + : null; + const firstIssueNumber = !isNil(volume.first_issue) + ? parseInt(volume.first_issue.issue_number, 10) + : null; + const lastIssueNumber = !isNil(volume.last_issue) + ? parseInt(volume.last_issue.issue_number, 10) + : null; + const issueNameMatchScore = stringSimilarity.compareTwoStrings( + scorerConfiguration.searchParams.searchTerms.name, + volume.name + ); if ( + !isNil(volumeStartYear) && + !isNil(firstIssueNumber) && + !isNil(lastIssueNumber) && + !isNil(issueNameMatchScore) && (isSameYear(issueYear, volumeStartYear) || isAfter(issueYear, volumeStartYear)) && - (firstIssueNumber <= issueNumber && - issueNumber <= lastIssueNumber) && + firstIssueNumber <= issueNumber && + issueNumber <= lastIssueNumber && issueNameMatchScore > 0.5 ) { - count += 1; console.log("issue name match score", issueNameMatchScore); console.log(volume); } }); - console.log("final count ", count); + return volumes; }; const calculateLevenshteinDistance = async (match: any, rawFileDetails: any) =>