Skill Matching Algorithm

I need to implement a skill matching function similar to http://venturocket.com - the candidate enters a list of skills and evaluates his skill for each. You can then search by re-entering some of the skills and level of knowledge you are looking for. The result is a list of candidates sorted by how well their skills match your search.

Example:

Candidate 1 introduces the Java skill (knowledge 90), and candidate 2 - in Java (50). When I search for Java (60), candidate 2 is closer.

This compilation also works with several skills.

What I'm looking for is pointers to technologies or algorithms that will help me with this. My current approach would be to execute a range query in a database (e.g. search for Java skills from 45 to 75) and then sort by client, but that won't be very fast.

+3
source share
3 answers

Pass the value you are checking as a parameter to the query, and then use the Euclidean Distance (squared difference) to sort:

SELECT TOP 20 * -- added a TOP 20 as example, choose/limit as appropriate for your situation
FROM Candidate
ORDER BY SQUARE(Candidate.JavaProficiency - @JavaProficiency) + SQUARE(Candidate.SqlProficiency - @SqlProficiency)

For several attributes, you summarize each of the square differences.

Wikipedia: Euclidean Distance ( , " " ). , - DanRedux (. /).

+4

.

, . 0. , , , .. , ; .

These are wide strokes for its implementation. In any serious application, I would advise you not to do this, but instead to delete something like sphinx or lucene to do this for you.

0
source

All Articles