日期:2014-05-19  浏览次数:20434 次

如何根据用户兴趣搜索?
想建了一张表,用来存储用户选择的兴趣,如:
电影兴趣:(用户可以多选)故事片   动作片   科幻片   .......
体育兴趣:(用户可以多选)足球   羽毛球   篮球..........
音乐兴趣:(用户可以多选)HIHAP   流行   古典.........
问题一:根据用户选择的兴趣搜索跟用户相同选择的用户,这样的表怎么建立?
问题二:怎么设置各单项兴趣的数值.根据最终的数值判断用户兴趣接近程度?

目前比较头痛的是地一个问题,怎么建立这样一张兴趣表,可以存储用户选择的兴趣,并可以根据不同类型的兴趣建立为以后搜索同兴趣的人的功能做准备.....
拜托各位高手给点建议和思路了....

------解决方案--------------------
这样的表个人感觉很容易啊~~

先将兴趣分类建表撒(多级的话就主从表或者单表也可以)

如: 01 0101 010101
...
02 0202
...
03 0301 030104
...

再建用户选择的兴趣表

如: user01 010101
user01 010102
user01 040302
user02 030201
user02 030204

在这个表里对数据进行比较 可以否?

个人建议 仅供参考~
------解决方案--------------------
问题一:根据用户选择的兴趣搜索跟用户相同选择的用户,这样的表怎么建立?
——————————————————————————————————————————
A: 你说的是动作。动作不能靠建表来表达。业务逻辑不等于数据库建表。

如果是记录什么是否匹配了哪些用户,那么建立一个表:
速配(发起用户,被匹配用户,匹配时间,顺序号)
每次匹配的之前,如果发起用户已经有匹配记录,则全部删除掉。

如果是记录用户的兴趣,那么可以建表:
兴趣(用户,兴趣)

表是死的,顶多只能看出初始状态和查询目的,不能看出动态模型的核心操作流程。分析一个复杂的过程,不要只是问“如何建表”。


问题二:怎么设置各单项兴趣的数值.根据最终的数值判断用户兴趣接近程度?
——————————————————————————————————————————
Q: “单项兴趣的数值”本来就是太具有作茧自缚的成分的“大胆”决定了。我看不出这个假设有用。
------解决方案--------------------
同意 snowpine999,

如: userid xingqu
user01 010101
user01 010102
user01 040302
user02 030201
user02 030204

--查找与user001兴趣相同的用户
SELECT a.xingqu, a.userid, b.userid AS Expr1
FROM Tab_xingqu a ,Tab_xingqu b where a.xingqu = b.xingqu AND a.userid <> b.userid AND a.userid = 'user001 '


--查找相同兴趣大于2的用户
SELECT b.userid, COUNT(b.userid) AS 相同兴趣数
FROM dbo.Tab_xingqu a INNER JOIN
dbo.Tab_xingqu b ON a.xingqu = b.xingqu AND a.userid <> b.userid
WHERE (a.userid = 'user001 ')
GROUP BY b.userid
HAVING (COUNT(b.userid) > 2)

------解决方案--------------------
电影兴趣:(用户可以多选)故事片 动作片 科幻片 .......
体育兴趣:(用户可以多选)足球 羽毛球 篮球..........
音乐兴趣:(用户可以多选)HIHAP 流行 古典.........

用户 电影 体育 音乐
u1 0100011 100010 100010
u2 1000010 100010 100010
u3 0100010 100010 100010


兴趣差异
u1-u2:2
u1-u3:1
u2-u3:2

------解决方案--------------------
這個分類就好了吧?

电影兴趣:(用户可以多选)故事片 动作片 科幻片 .......
01            01   02   03
体育兴趣:(用户可以多选)足球 羽毛球 篮球..........
02            01  02  03
音乐兴趣:(用户可以多选)HIHAP 流行 古典.........
03            01  02  03

用戶選擇後存入數據表可為:
user1 0101
user1 0102
user2 0102
user2 0201
.........

搜索時可按分類判斷口味相似度
如上數據可:select * from table where field2 like '01% ' and field1 <> 'user1 '即可查出與user1有相同喜好類別的其他用戶數據,再比較兩用戶完整喜好類別相同的類別各占其各自喜好總數比例判斷其喜好相似度