2012-05-07 158 views
0

我想解決約會網站的問題。這是問題配置文件的多屬性匹配

應用程序的每個用戶都會擁有一些屬性 - 如他讀的書,他看的電影,音樂,電視節目等。這些屬性被定義爲頂級屬性類別。每個類別都可以有任意數量的值。例如在書籍:噴泉頭,愛情故事...

現在,我需要根據配置文件屬性匹配用戶。以下是我計劃要做的事情:

用反向索引存儲數據。如果。每個噴泉頭,愛情故事等都是具有該屬性的用戶組的索引鍵。

當新用戶加入時,獲取該用戶的屬性,查找該用戶的哪些索引鍵,獲取這些鍵的所有用戶,桶(或基數排序或類似排序),根據多少對此合併列表中的用戶進行計時。

這好,壞,差?還有其他建議嗎?

感謝 阿賈伊

+0

我看不出爲什麼這個問題應該已經被低估了。 – DroidOS

回答

7

你描述的算法是不壞,儘管它使用人之間的相似度非常簡單的概念。

讓我們使它更可調整,而不會創建複雜的匹配標準。比方說,喜歡同一本書的人比聽同樣音樂的人更相似。每個興趣都是一樣的。也就是說,不同領域的相似性具有不同的權重。

就像你說的那樣,你可以爲每個興趣(如書,歌等)保留一個列表給他們的個人資料中的人。然後,說你想找到的人g的比賽:

for each interest i in g's interests: 
    for each person p in list of i 
    if p and g have mismatching sexual preferences 
     continue 
    if p is already in g's match list 
     g->match_list[p].score += i->match_weight 
    else 
     add p to g->match_list with score i->match_weight 

sort g->match_list based on score 

權重的選擇不是一個簡單的任務,但。你需要很多心理才能做到這一點。然而,使用你的常識,你可以得到不那麼遙遠的價值觀。

一般來說,匹配人比總結一些分數要複雜得多。例如,某一組匹配的興趣可能比它們的個體總和更多(或在某些情況下更少)效果。此外,無論其他匹配興趣是否存在,對其中一個人的興趣可能完全導致對另一個人的拒絕(帶兩個非常相似的人,其中一個人喜歡,另一個人喜歡黃昏)

+0

謝謝Shahbaz。這有助於。你能否建議任何其他複雜的算法來匹配基於各種屬性的人? –

+1

@AjayBansal,就像我說的,這是在心理學領域。看看[這個網站](http://mashable.com/2011/07/13/match-com-equation/)例如,以瞭解你可以做出多麼複雜的想法。在我看來,與人類的行爲方式相比,這些算法仍然非常基礎。你也可以在科學論文中找到一些東西。 – Shahbaz

+0

@Shahbaz,在SQL查詢中可能嗎? –