🔧 Flattened the array of volumes returned from the recursive search call to CV

This commit is contained in:
2021-12-24 17:09:07 -08:00
parent 71223fb8ed
commit b95a98c41e
2 changed files with 21 additions and 11 deletions

View File

@@ -191,14 +191,13 @@ export default class ComicVineService extends Service {
output.push(...data.results); output.push(...data.results);
// 1a. Run the current batch of volumes through the matcher // 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); rankVolumes(output, params.scorerConfiguration);
currentPage += 1; currentPage += 1;
params.page = currentPage; params.page = currentPage;
console.log(`Fetching results for page ${currentPage}...`); console.log(`Fetching results for page ${currentPage}...`);
return await this.fetchVolumesFromCV(params, output); return await this.fetchVolumesFromCV(params, output);
} else { } else {
return output; return { ...output };
} }
}, },
}, },

View File

@@ -93,28 +93,39 @@ export const rankVolumes = (volumes: any, scorerConfiguration: any) => {
scorerConfiguration.searchParams.searchTerms.number, scorerConfiguration.searchParams.searchTerms.number,
10 10
); );
let count = 0;
const issueYear = parseISO( const issueYear = parseISO(
scorerConfiguration.searchParams.searchTerms.year scorerConfiguration.searchParams.searchTerms.year
); );
volumes.map(async (volume: any, idx: number) => { volumes.map(async (volume: any, idx: number) => {
const volumeStartYear = parseISO(volume.start_year); const volumeStartYear = !isNil(volume.start_year)
const firstIssueNumber = parseInt(volume.first_issue.issue_number, 10); ? parseISO(volume.start_year)
const lastIssueNumber = parseInt(volume.last_issue.issue_number, 10); : null;
const issueNameMatchScore = stringSimilarity.compareTwoStrings(scorerConfiguration.searchParams.searchTerms.name, volume.name); 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 ( if (
!isNil(volumeStartYear) &&
!isNil(firstIssueNumber) &&
!isNil(lastIssueNumber) &&
!isNil(issueNameMatchScore) &&
(isSameYear(issueYear, volumeStartYear) || (isSameYear(issueYear, volumeStartYear) ||
isAfter(issueYear, volumeStartYear)) && isAfter(issueYear, volumeStartYear)) &&
(firstIssueNumber <= issueNumber && firstIssueNumber <= issueNumber &&
issueNumber <= lastIssueNumber) && issueNumber <= lastIssueNumber &&
issueNameMatchScore > 0.5 issueNameMatchScore > 0.5
) { ) {
count += 1;
console.log("issue name match score", issueNameMatchScore); console.log("issue name match score", issueNameMatchScore);
console.log(volume); console.log(volume);
} }
}); });
console.log("final count ", count); return volumes;
}; };
const calculateLevenshteinDistance = async (match: any, rawFileDetails: any) => const calculateLevenshteinDistance = async (match: any, rawFileDetails: any) =>