def processAll(request): start_time = time.clock() similarityValue = {} response = "" for user1 in User.objects.select_related().all(): similarityValue[user1.userId] = {} for user2 in User.objects.select_related().exclude(userId=user1.userId): #if Similarity.objects.extra(where=["similarityUser1_id IN (%s, %s) AND similarityUser2_id IN (%s, %s)"], params=[user1.userId,user2.userId,user1.userId,user2.userId]).exists(): if user1.userId in similarityValue: if user2.userId in similarityValue[user1.userId]: continue if user2.userId in similarityValue: if user1.userId in similarityValue[user2.userId]: continue sp = SimilarityProcess() simValue = sp.process(user1, user2, 1) response += user1.userName + " & " + user2.userName + " simValue : " + str(simValue) + "<br />" similarityValue[user1.userId][user2.userId] = simValue ''' insert similarity value to db sim = Similarity() sim.similarityUser1 = user1 sim.similarityUser2 = user2 sim.similarityValue = simValue sim.save() #''' response += str(time.clock() - start_time) + " seconds<br />" return HttpResponse(response)
def processUser(request): if request.method == "POST" : userId = str(request.POST["userId"]) sp = SimilarityProcess() sp.processUser(userId) return HttpResponse("") else : return HttpResponse("what?")
def listReviews(request): if request.method == "POST" : user = User() user.userId = int(request.POST["userId"]) place = Place() place.placeId = int(request.POST["placeId"]) typeId = int(request.POST["typeId"]) data = [] for r in Review.objects.filter(reviewPlace_id=place).exclude(reviewUser_id=user) : dict = {} dict['userId'] = r.reviewUser.userId dict['userAlias'] = r.reviewUser.userAlias dict['reviewPointPrice'] = r.reviewPointPrice dict['reviewPointService'] = r.reviewPointService dict['reviewPointLocation'] = r.reviewPointLocation dict['reviewPointCondition'] = r.reviewPointCondition dict['reviewPointComfort'] = r.reviewPointComfort dict['reviewText'] = r.reviewText average = float(r.reviewPointPrice+r.reviewPointService+r.reviewPointLocation+r.reviewPointCondition+r.reviewPointComfort) / 5 dict['averagePoint'] = average sp = SimilarityProcess() dict['similarityValue'] = sp.process(User.objects.get(userId=user.userId), r.reviewUser, typeId) dict['newSimilarityValue'] = float(dict['similarityValue']) * average data.append(dict) #''' normalizing similarity on same place minV = min(data, key=lambda x:x['similarityValue']) maxV = max(data, key=lambda x:x['similarityValue']) minValue = minV['similarityValue'] maxValue = maxV['similarityValue'] for dict in data: dict["similarityValue"] = float((dict["similarityValue"] - minValue)/(maxValue - minValue)) dict['newSimilarityValue'] = dict['similarityValue'] * dict['averagePoint'] dict['averagePoint'] = str(dict['averagePoint']) fuzzy = Fuzzy() dict['similarityFlag'] = str(fuzzy.process(dict['similarityValue'])) #''' data = sorted(data, key=lambda rev: rev['newSimilarityValue'], reverse=True) return HttpResponse(json.dumps(data)) else : return HttpResponse("what?")