这是我的目标。一个用户有一个技能+熟练度元组的列表。
我们希望根据一些技能/经验标准来寻找用户:
java, 新手
php,专家
mysql,高级
* 技能非常需要并且所有其他技能都很好。达到或超过(基于经验)的用户将排名最高。但它也应该很好地降解。如果没有用户同时拥有 java 和 php 经验,但他们拥有一项非常需要的技能,那么他们应该排在首位。只有一项可选技能的用户可能会出现在底部。
我的一个想法是在如下领域索引用户的技能:
skill_novice: java
skill_novice: php
skill_advanced: php
skill_expert: php
skill_novice: mysql
skill_advanced: mysql
...这样我至少可以做一个逻辑查询来找到满足高度期望技能的人:
(skill_novice:java AND skill_expert:php)
但这不会很好地降低(如果没有找到匹配项),也不会找到可选技能。也许相反,我可以做这样的事情:
skill_novice:java AND
(skill_novice:php^0.1 OR skill_advanced:php^0.2 OR skill_expert:php^0.3)
有没有更好的方法来实现这一点?