7.4.1 Approaching the problem one job at a time
At first glance, we might consider a straightforward solution to this problem. Start
with every job having its own SET, with members being the skills that the job requires.
To check whether a candidate has all of the requirements for a given job, we’d add the
candidate’s skills to a SET and then perform the SDIFF of the job and the candidate’s
skills. If there are no skills in the resulting SDIFF, then the user has all of the qualifications
necessary to complete the job. The code for adding a job and checking whether
a given set of skills is sufficient for that job looks like this next listing.
Explaining that again, we’re checking whether a job requires any skills that the candidate
doesn’t have. This solution is okay, but it suffers from the fact that to find all of
the jobs for a given candidate, we must check each job individually. This won’t scale,
but there are solutions that will.