def evalChangeDiversity(request): if len(request.GET.keys()) == 0: return HttpResponse(status=404) if request.GET['search'] is None: return HttpResponse(status=404) search = request.GET['search'].encode("UTF-8") srch = Search.objects.filter(query__exact = search).order_by('searchID').last() results = SearchResult.objects.filter(searchID__exact = srch).order_by('rank') matrix = [[0 for x in range(results.__len__())] for y in range(results.__len__())] firstRes = results.first().resultID lastRes = results.last().resultID distQ = Distances.objects.filter(firstDoc__resultID__gte = firstRes, firstDoc__resultID__lte = lastRes).order_by('firstDoc', 'secondDoc') if distQ is None or distQ.__len__() == 0: return HttpResponse(status=404) for dist in distQ: matrix[dist.firstDoc.resultID-firstRes][dist.secondDoc.resultID-firstRes] = dist.distance matrix[dist.secondDoc.resultID-firstRes][dist.firstDoc.resultID-firstRes] = dist.distance if request.GET['lambda'] is None: lamb = 0.0 else: lamb = float(request.GET['lambda']) ranking = Diversity.diversityRanking(matrix, results, lamb) ILDMatrix = [[0 for x in range(sizeILD)] for y in range(sizeILD)] for i in range(sizeILD): for j in range(sizeILD): ILDMatrix[i][j] = matrix[ranking[i]-1][ranking[j]-1] ild = Diversity.calculateILD(ILDMatrix) lnkList = [] for i in range(results.__len__()): result = results[ranking[i]-1] lnk = Link() lnk.url = result.url lnk.title = result.title lnk.descr = result.snippet lnk.query = search lnk.rank = result.rank lnk.save = False lnkList.append(lnk) context = {'serverName' : request.META['SERVER_NAME'], 'serverPort' : request.META['SERVER_PORT'], 'query2': search, 'query': urllib.quote(request.GET['search'].encode("UTF-8")), 'diversityList': lnkList, 'ildDiversity' : ild } return render(request, 'evaluation/evalchangediversity.html', context)
def doDiversity(request): if len(request.GET.keys()) == 0: return HttpResponse(status=404) if request.GET.get('search') is None or request.GET.get('filter') is None: return HttpResponse(status=404) srch = request.GET['search'].encode("UTF-8") query = urllib.quote(srch) filtering = False if request.GET['filter'] is None: filtering = False else: filtering = (request.GET['filter'] == 'True') ws = Webservice() filteredSearchers = [] rankers = Ranker.objects.all() for r in rankers: filter = request.GET.get(r.name) if filter is not None: if filter != "True": filteredSearchers.append(r.rankerID) # if filtering is True: # url = url + "True" # else: # url = url + "False" #Recuperamos los resultados url = 'http://localhost:10000/filter/save?query='+query+'&clientIP='+request.META['REMOTE_ADDR']+'&filter=False' list_result = ws.call_ws(url, request.META['HTTP_USER_AGENT']) search = Search() search.query = query search.numResults = list_result.__len__() search.save() results = [] for res in list_result: sr = SearchResult() sr.searchID = search sr.rank = res['rank'] sr.snippet = res['snippet'] sr.title = res['title'] sr.value = res['value'] sr.url = res['url'] sr.saved = res['saved'] sr.save() for source in res['source']: ranker = Ranker.objects.filter(rankerID__exact = source).first() src = Sources(ranker = ranker, result = sr, rank = 1) src.save() results.append(sr) matrix = [[0 for x in range(list_result.__len__())] for y in range(list_result.__len__())] url = 'http://localhost:10000/diversity/?query='+query+'&clientIP='+request.META['REMOTE_ADDR']+'&filter=False' list_matrix = ws.call_ws(url, request.META['HTTP_USER_AGENT']) for dist in list_matrix['matrix']: d = Distances() d.firstDoc = results[dist['rank1'] - 1] d.secondDoc = results[dist['rank2'] - 1] d.distance = dist['distance'] d.save() matrix[dist['rank1'] - 1][dist['rank2'] - 1] = d.distance matrix[dist['rank2'] - 1][dist['rank1'] - 1] = d.distance ranking = Diversity.diversityRanking(matrix, results, 0.5) listLinks = [] for i in range(list_result.__len__()): result = list_result[ranking[i]-1] lnk = Link() lnk.url = result['url'] lnk.title = result['title'] lnk.descr = result['snippet'] lnk.query = search lnk.rank = result['rank'] lnk.saved = result['saved'] introduce = True if lnk.saved is True and filtering is True: introduce = False sourceslist=[] numCoinc = 0 for source in result['source']: if filteredSearchers.__contains__(source): numCoinc += 1 if numCoinc == result['source'].__len__(): introduce = False if introduce is True: listLinks.append((lnk, result['source'])) context = {'searchid': search.searchID ,'serverName' : request.META['SERVER_NAME'], 'serverPort' : request.META['SERVER_PORT'],'query2': srch, 'query': query, 'linkList': listLinks} return render(request, 'search/searched.html', context)
def retrieveSearch(request): if len(request.GET.keys()) == 0: return HttpResponse(status=404) if request.GET.get('search') is None or request.GET.get('filter') is None: return HttpResponse(status=404) if request.GET.get('searchid') is None: return HttpResponse(status=404) diversified = False if(request.GET['searchid'] != '-1'): diversified = True filtering = False if request.GET['filter'] is None: filtering = False else: filtering = (request.GET['filter'] == 'False') listFilter = [] for r in Ranker.objects.all(): filter = request.GET.get(r.name) if filter is not None and filter == 'False': listFilter.append(r.rankerID) query = urllib.quote(request.GET['search'].encode("UTF-8")) if diversified is False: url = 'http://localhost:10000/filter/save?query='+query+'&clientIP='+request.META['REMOTE_ADDR']+'&filter=' if filtering is True: url = url + 'True' else: url = url + 'False' rankers = Ranker.objects.all() listFilter = [] for r in rankers: filter = request.GET.get(r.name) if filter is not None: url += '&' + r.name + '=' + filter ws = Webservice() list_result = ws.call_ws(url, request.META['HTTP_USER_AGENT']) listLinks = list() for result in list_result: i = 0 lnk = Link() lnk.url = result['url'] lnk.title = result['title'] lnk.descr = result['snippet'] lnk.rank = result['rank'] lnk.saved = result['saved'] listLinks.append((lnk, result['source'])) context = {'searchid': -1, 'serverName' : request.META['SERVER_NAME'], 'serverPort' : request.META['SERVER_PORT'], 'query2': request.GET['search'], 'query': urllib.quote(request.GET['search'].encode("UTF-8")), 'linkList': listLinks} return render(request, 'search/searched.html', context) else: search = Search.objects.filter(searchID__exact = int(request.GET['searchid'])).first() results = SearchResult.objects.filter(searchID__exact = search).order_by('rank') ##Obtener de la base de datos la matriz de diversidad firstRes = results.first().resultID lastRes = results.last().resultID distQ = Distances.objects.filter(firstDoc__resultID__gte = firstRes, firstDoc__resultID__lte = lastRes).order_by('firstDoc', 'secondDoc') if distQ is None or distQ.__len__() == 0: return HttpResponse(status=404) matrix = [[0 for x in range(results.__len__())] for y in range(results.__len__())] for dist in distQ: matrix[dist.firstDoc.resultID-firstRes][dist.secondDoc.resultID-firstRes] = dist.distance matrix[dist.secondDoc.resultID-firstRes][dist.firstDoc.resultID-firstRes] = dist.distance ranking = Diversity.diversityRanking(matrix, results, 0.5) url = 'http://localhost:10000/filter/save?query='+query+'&clientIP='+request.META['REMOTE_ADDR']+'&filter=False' rankers = Ranker.objects.all() listFilter = [] for r in rankers: filter = request.GET.get(r.name) if filter is not None: url += '&' + r.name + '=True' ws = Webservice() list_result = ws.call_ws(url, request.META['HTTP_USER_AGENT']) lnkList = [] for i in range(results.__len__()): result = list_result[ranking[i]-1] lnk = Link() lnk.url = result['url'] lnk.title = result['title'] lnk.descr = result['snippet'] lnk.query = search.query lnk.rank = result['rank'] lnk.saved = result['saved'] introduce = True if lnk.saved is True and filtering is True: introduce = False sourceslist=[] numCoinc = 0 for source in result['source']: if listFilter.__contains__(source): numCoinc += 1 if numCoinc == result['source'].__len__(): introduce = False if introduce is True: lnkList.append((lnk, result['source'])) context = {'searchid' : request.GET['searchid'], 'serverName' : request.META['SERVER_NAME'], 'serverPort' : request.META['SERVER_PORT'], 'query2': request.GET['search'], 'query': urllib.quote(request.GET['search'].encode("UTF-8")), 'linkList': lnkList} return render(request, 'search/searched.html', context)
def doDiversity(request): if len(request.GET.keys()) == 0: return HttpResponse(status=404) if request.GET.get('search') is None or request.GET.get('filter') is None: return HttpResponse(status=404) srch = request.GET['search'].encode("UTF-8") query = urllib.quote(srch) filtering = False if request.GET['filter'] is None: filtering = False else: filtering = (request.GET['filter'] == 'True') ws = Webservice() filteredSearchers = [] rankers = Ranker.objects.all() for r in rankers: filter = request.GET.get(r.name) if filter is not None: if filter != "True": filteredSearchers.append(r.rankerID) # if filtering is True: # url = url + "True" # else: # url = url + "False" #Recuperamos los resultados url = 'http://localhost:10000/filter/save?query=' + query + '&clientIP=' + request.META[ 'REMOTE_ADDR'] + '&filter=False' list_result = ws.call_ws(url, request.META['HTTP_USER_AGENT']) search = Search() search.query = query search.numResults = list_result.__len__() search.save() results = [] for res in list_result: sr = SearchResult() sr.searchID = search sr.rank = res['rank'] sr.snippet = res['snippet'] sr.title = res['title'] sr.value = res['value'] sr.url = res['url'] sr.saved = res['saved'] sr.save() for source in res['source']: ranker = Ranker.objects.filter(rankerID__exact=source).first() src = Sources(ranker=ranker, result=sr, rank=1) src.save() results.append(sr) matrix = [[0 for x in range(list_result.__len__())] for y in range(list_result.__len__())] url = 'http://localhost:10000/diversity/?query=' + query + '&clientIP=' + request.META[ 'REMOTE_ADDR'] + '&filter=False' list_matrix = ws.call_ws(url, request.META['HTTP_USER_AGENT']) for dist in list_matrix['matrix']: d = Distances() d.firstDoc = results[dist['rank1'] - 1] d.secondDoc = results[dist['rank2'] - 1] d.distance = dist['distance'] d.save() matrix[dist['rank1'] - 1][dist['rank2'] - 1] = d.distance matrix[dist['rank2'] - 1][dist['rank1'] - 1] = d.distance ranking = Diversity.diversityRanking(matrix, results, 0.5) listLinks = [] for i in range(list_result.__len__()): result = list_result[ranking[i] - 1] lnk = Link() lnk.url = result['url'] lnk.title = result['title'] lnk.descr = result['snippet'] lnk.query = search lnk.rank = result['rank'] lnk.saved = result['saved'] introduce = True if lnk.saved is True and filtering is True: introduce = False sourceslist = [] numCoinc = 0 for source in result['source']: if filteredSearchers.__contains__(source): numCoinc += 1 if numCoinc == result['source'].__len__(): introduce = False if introduce is True: listLinks.append((lnk, result['source'])) context = { 'searchid': search.searchID, 'serverName': request.META['SERVER_NAME'], 'serverPort': request.META['SERVER_PORT'], 'query2': srch, 'query': query, 'linkList': listLinks } return render(request, 'search/searched.html', context)
def retrieveSearch(request): if len(request.GET.keys()) == 0: return HttpResponse(status=404) if request.GET.get('search') is None or request.GET.get('filter') is None: return HttpResponse(status=404) if request.GET.get('searchid') is None: return HttpResponse(status=404) diversified = False if (request.GET['searchid'] != '-1'): diversified = True filtering = False if request.GET['filter'] is None: filtering = False else: filtering = (request.GET['filter'] == 'False') listFilter = [] for r in Ranker.objects.all(): filter = request.GET.get(r.name) if filter is not None and filter == 'False': listFilter.append(r.rankerID) query = urllib.quote(request.GET['search'].encode("UTF-8")) if diversified is False: url = 'http://localhost:10000/filter/save?query=' + query + '&clientIP=' + request.META[ 'REMOTE_ADDR'] + '&filter=' if filtering is True: url = url + 'True' else: url = url + 'False' rankers = Ranker.objects.all() listFilter = [] for r in rankers: filter = request.GET.get(r.name) if filter is not None: url += '&' + r.name + '=' + filter ws = Webservice() list_result = ws.call_ws(url, request.META['HTTP_USER_AGENT']) listLinks = list() for result in list_result: i = 0 lnk = Link() lnk.url = result['url'] lnk.title = result['title'] lnk.descr = result['snippet'] lnk.rank = result['rank'] lnk.saved = result['saved'] listLinks.append((lnk, result['source'])) context = { 'searchid': -1, 'serverName': request.META['SERVER_NAME'], 'serverPort': request.META['SERVER_PORT'], 'query2': request.GET['search'], 'query': urllib.quote(request.GET['search'].encode("UTF-8")), 'linkList': listLinks } return render(request, 'search/searched.html', context) else: search = Search.objects.filter( searchID__exact=int(request.GET['searchid'])).first() results = SearchResult.objects.filter( searchID__exact=search).order_by('rank') ##Obtener de la base de datos la matriz de diversidad firstRes = results.first().resultID lastRes = results.last().resultID distQ = Distances.objects.filter( firstDoc__resultID__gte=firstRes, firstDoc__resultID__lte=lastRes).order_by('firstDoc', 'secondDoc') if distQ is None or distQ.__len__() == 0: return HttpResponse(status=404) matrix = [[0 for x in range(results.__len__())] for y in range(results.__len__())] for dist in distQ: matrix[dist.firstDoc.resultID - firstRes][dist.secondDoc.resultID - firstRes] = dist.distance matrix[dist.secondDoc.resultID - firstRes][dist.firstDoc.resultID - firstRes] = dist.distance ranking = Diversity.diversityRanking(matrix, results, 0.5) url = 'http://localhost:10000/filter/save?query=' + query + '&clientIP=' + request.META[ 'REMOTE_ADDR'] + '&filter=False' rankers = Ranker.objects.all() listFilter = [] for r in rankers: filter = request.GET.get(r.name) if filter is not None: url += '&' + r.name + '=True' ws = Webservice() list_result = ws.call_ws(url, request.META['HTTP_USER_AGENT']) lnkList = [] for i in range(results.__len__()): result = list_result[ranking[i] - 1] lnk = Link() lnk.url = result['url'] lnk.title = result['title'] lnk.descr = result['snippet'] lnk.query = search.query lnk.rank = result['rank'] lnk.saved = result['saved'] introduce = True if lnk.saved is True and filtering is True: introduce = False sourceslist = [] numCoinc = 0 for source in result['source']: if listFilter.__contains__(source): numCoinc += 1 if numCoinc == result['source'].__len__(): introduce = False if introduce is True: lnkList.append((lnk, result['source'])) context = { 'searchid': request.GET['searchid'], 'serverName': request.META['SERVER_NAME'], 'serverPort': request.META['SERVER_PORT'], 'query2': request.GET['search'], 'query': urllib.quote(request.GET['search'].encode("UTF-8")), 'linkList': lnkList } return render(request, 'search/searched.html', context)
def evalChangeDiversity(request): if len(request.GET.keys()) == 0: return HttpResponse(status=404) if request.GET['search'] is None: return HttpResponse(status=404) search = request.GET['search'].encode("UTF-8") srch = Search.objects.filter( query__exact=search).order_by('searchID').last() results = SearchResult.objects.filter( searchID__exact=srch).order_by('rank') matrix = [[0 for x in range(results.__len__())] for y in range(results.__len__())] firstRes = results.first().resultID lastRes = results.last().resultID distQ = Distances.objects.filter(firstDoc__resultID__gte=firstRes, firstDoc__resultID__lte=lastRes).order_by( 'firstDoc', 'secondDoc') if distQ is None or distQ.__len__() == 0: return HttpResponse(status=404) for dist in distQ: matrix[dist.firstDoc.resultID - firstRes][dist.secondDoc.resultID - firstRes] = dist.distance matrix[dist.secondDoc.resultID - firstRes][dist.firstDoc.resultID - firstRes] = dist.distance if request.GET['lambda'] is None: lamb = 0.0 else: lamb = float(request.GET['lambda']) ranking = Diversity.diversityRanking(matrix, results, lamb) ILDMatrix = [[0 for x in range(sizeILD)] for y in range(sizeILD)] for i in range(sizeILD): for j in range(sizeILD): ILDMatrix[i][j] = matrix[ranking[i] - 1][ranking[j] - 1] ild = Diversity.calculateILD(ILDMatrix) lnkList = [] for i in range(results.__len__()): result = results[ranking[i] - 1] lnk = Link() lnk.url = result.url lnk.title = result.title lnk.descr = result.snippet lnk.query = search lnk.rank = result.rank lnk.save = False lnkList.append(lnk) context = { 'serverName': request.META['SERVER_NAME'], 'serverPort': request.META['SERVER_PORT'], 'query2': search, 'query': urllib.quote(request.GET['search'].encode("UTF-8")), 'diversityList': lnkList, 'ildDiversity': ild } return render(request, 'evaluation/evalchangediversity.html', context)