root / neighbors / neighbours.py

Revision 165:6811f8d6cb25, 1.0 kB (checked in by mercurial@…, 12 months ago)

merge

Line 
1import logging
2from model import distance
3from model import query
4from neartag import NearestByTag
5from config import tag_retriever, user_tags_retriever, user_retriever
6
7def get(user, k=10):
8    # see how to order by and get only k firts elements
9    res = distance.select().execute(user=user).fetchall()
10    res = [(el[2], el[1]) for el in res]
11    res.sort()
12    return res
13
14def compute():
15    # tags
16    tags = [res[0] for res in query(tag_retriever)]
17    users = [res[0] for res in query(user_retriever)]
18
19    # will get the tags, the users, compute
20    # the distance, then save them
21    solver = NearestByTag(tags)
22
23    for user in users:
24        user_tags = [res[0] for res in query(user_tags_retriever % user)]
25        solver.add_user(user, user_tags)
26
27    # now gets the computed results, and save them
28    distance.delete().execute()
29
30    for user in users:
31        neighbours = solver.neighbours(user)
32        for value, name in neighbours:
33            distance.insert().execute(user=user, neighbour=name,
34                                      distance=value)
35
36
37
Note: See TracBrowser for help on using the browser.