{"id":774,"date":"2014-07-22T12:32:44","date_gmt":"2014-07-22T10:32:44","guid":{"rendered":"http:\/\/blog.the-leviathan.ch\/?p=774"},"modified":"2014-07-22T17:15:44","modified_gmt":"2014-07-22T15:15:44","slug":"geekdarling-ch-matching-algorithm","status":"publish","type":"post","link":"https:\/\/blog.the-leviathan.ch\/?p=774","title":{"rendered":"geekdarling.ch &#8211; Matching algorithm"},"content":{"rendered":"<p>Hey folks<br \/>\nSince the GPLed dating platform code out there is crappy PHP work and not suited to help geeks meet each other either, I started designing a new matching algorithm in course of the rewrite of geekdarling.ch as a Ruby application.<br \/>\nBasically the idea is quite easy. First I travel the bipartite tree and cut it into subtrees matching the basic requirement of matching sexual orientation and this way saving CPU power by checking for bidirectional preferences.<\/p>\n<p><a href=\"https:\/\/blog.the-leviathan.ch\/wp-content\/uploads\/2014\/07\/matching11.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-779 size-full\" style=\"background-color: white;\" src=\"https:\/\/blog.the-leviathan.ch\/wp-content\/uploads\/2014\/07\/matching11.png\" alt=\"\" width=\"488\" height=\"229\" srcset=\"https:\/\/blog.the-leviathan.ch\/wp-content\/uploads\/2014\/07\/matching11.png 488w, https:\/\/blog.the-leviathan.ch\/wp-content\/uploads\/2014\/07\/matching11-300x140.png 300w\" sizes=\"auto, (max-width: 488px) 100vw, 488px\" \/><\/a><\/p>\n<p>Second step: I will then value additional attributes based on a two way connection and average the weight of every forth and back arrow.<br \/>\n<a href=\"https:\/\/blog.the-leviathan.ch\/wp-content\/uploads\/2014\/07\/matching21.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-783 size-full\" style=\"background-color: white;\" src=\"https:\/\/blog.the-leviathan.ch\/wp-content\/uploads\/2014\/07\/matching21.png\" alt=\"\" width=\"319\" height=\"260\" srcset=\"https:\/\/blog.the-leviathan.ch\/wp-content\/uploads\/2014\/07\/matching21.png 319w, https:\/\/blog.the-leviathan.ch\/wp-content\/uploads\/2014\/07\/matching21-300x244.png 300w\" sizes=\"auto, (max-width: 319px) 100vw, 319px\" \/><\/a><\/p>\n<p>For the example on the upper graphics that would mean: R=(((6+1)\/2)+((3+4)\/2)+0)\/3=2.3<br \/>\nIlluminated! \ud83d\ude09<\/p>\n<p>Another practical example: Let&#8217;s say I choose under &#8220;preferred editor&#8221; select that it&#8217;s absolutely important to me that my partner like vim too, then anyone who likes vim as well will be given 100 additional points when being weighted in our matching algorithm, and so all the vim using geek girls are listed first (followed by the emacs users ;-)).<\/p>\n<p>I&#8217;m not quite done yet, but that&#8217;s where I&#8217;m going \ud83d\ude42<br \/>\nPlease gimme feedback.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Hey folks Since the GPLed dating platform code out there is crappy PHP work and not suited to help geeks meet each other either, I started designing a new matching algorithm in course of the rewrite of geekdarling.ch as a Ruby application. Basically the idea is quite easy. First I travel the bipartite tree and &hellip; <a href=\"https:\/\/blog.the-leviathan.ch\/?p=774\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">geekdarling.ch &#8211; Matching algorithm<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6],"tags":[],"class_list":["post-774","post","type-post","status-publish","format-standard","hentry","category-tech"],"_links":{"self":[{"href":"https:\/\/blog.the-leviathan.ch\/index.php?rest_route=\/wp\/v2\/posts\/774","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.the-leviathan.ch\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.the-leviathan.ch\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.the-leviathan.ch\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.the-leviathan.ch\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=774"}],"version-history":[{"count":8,"href":"https:\/\/blog.the-leviathan.ch\/index.php?rest_route=\/wp\/v2\/posts\/774\/revisions"}],"predecessor-version":[{"id":786,"href":"https:\/\/blog.the-leviathan.ch\/index.php?rest_route=\/wp\/v2\/posts\/774\/revisions\/786"}],"wp:attachment":[{"href":"https:\/\/blog.the-leviathan.ch\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=774"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.the-leviathan.ch\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=774"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.the-leviathan.ch\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=774"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}