3

http://venturocket.comと同様のスキルマッチング機能を実装する必要があります。候補者はスキルのリストを入力し、それぞれのスキルを評価します。次に、探しているスキルと専門知識のレベルをもう一度入力して検索できます。結果は、スキルが検索にどの程度一致しているかによって並べ替えられた候補のリストです。

例:

候補者1はスキルJava(習熟度90)に入り、候補者2はJava(50)に入ります。Java(60)を検索すると、候補2がより一致します。

このスホールドは、複数のスキルでも機能します。

私が探しているのは、これを達成するのに役立つテクノロジーまたはアルゴリズムへのポインターです。私の現在のアプローチは、データベースで範囲クエリを実行し(たとえば、45〜75のJavaスキルを探す)、クライアントでソートすることですが、それはそれほど高速ではありません。

4

3 に答える 3

4

チェックインする値をクエリのパラメーターとして渡し、ユークリッド距離(差の2乗)を使用して並べ替えます。

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)

複数の特性については、それぞれの正方形の違いを合計します。

もう少し詳細については、Wikipedia:ユークリッド距離を参照してください(具体的には、「2乗ユークリッド距離」セクション)。この回答は実際にはDanReduxのものであることに注意してください(コメント/編集を参照)。

于 2012-05-12T07:00:15.600 に答える
2

このようなものを実装するように求められた場合は、クラスタリングアルゴリズムを調べることから始めます。

多数のプロパティ(スキル)での類似性に基づいて候補をグループ化することにより、検索パラメーターに一致する可能性が最も高い候補のクラスターを簡単に把握できます。

k-meansクラスタリングはかなり使いやすく、おそらく開始するのに適した場所です。 http://en.wikipedia.org/wiki/K-means_clustering

ほとんどのプログラミング言語にはk-meansの確実な実装があるため、開始するのはかなり簡単です。

集合知プログラミングのクラスターベースのフィルタリングについては、多くの優れた情報があります— <a href="http://shop.oreilly.com/product/9780596529321.do" rel="nofollow"> http://shop.oreilly。 com / product / 9780596529321.do

于 2012-05-12T15:54:37.377 に答える
0

これを情報検索の問題として扱い、コサイン類似性を使用することができます。

これには、候補者ごとに、タグごとに入力したスコアのベクトルを作成することが含まれます。言及されていないタグのスコアは0になります。クエリも同様に変換され、ユーザーは各タグのスコアをリクエストできます。または、言及されたタグを高スコアとして扱うこともできます。ドット積と大きさを使用して、クエリ間の類似スコアを計算できます。および各候補者。一番上のものを並べ替えて選択します。

これらは、それを自分で実装するための幅広いストロークです。深刻なアプリケーションでは、そうしないことをお勧めします。代わりに、スフィンクスルセンなどをほこりで取り除きます。

于 2012-05-13T00:18:21.590 に答える