Need help figuring this out.
I have two tables
user
----
name
skills (comma separated value of skills;not mapped to next table)
where a users name and his technical skills are stored.
skills
-----
id
language_name
where we store only skills without mapping to anything.
And I have a search form with one textfield where you can input the primary skill :
eg. java javascript html css
Based on the value entered I want to find the best person with the technical skills and also display the person who comes closest to the skills searched.
Any idea how do I go about achieving this. Recommendations for changes in table structures are also welcome.
Note: The best person is the one who has the greatest number of skills in the list.
You can either use a normal normalised tag table for the skills and use SQL, or you can store the skills as a single list and use FREETEXT searching on the single column.
Every time you encounter a new skill, just create a new entry for it in skill, so “.Net”, “DotNet”, “C#.Net” would appear 3 times.
When searching for the best match for “java javascript html css”, break that into a list of 4, so the query looks like this
(shows the top 10)
On SQL Server 2005, with the help of FOR XML, you can also get the list of missing skills per each of the best 10 matching users