Ejemplo n.º 1
0
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)
Ejemplo n.º 2
0
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)
Ejemplo n.º 3
0
def evaldoDiversity(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")
    ws = Webservice()
    list_result = ws.call_ws_search(search, False, request.META['REMOTE_ADDR'], request.META['HTTP_USER_AGENT'])

    #Obtaining the results
    url = 'http://localhost:10000/search?query='+urllib.quote(search)+'&clientIP='+request.META['REMOTE_ADDR']+'&filter=False'

    srch = Search()
    srch.query = search
    srch.numResults = list_result['search'].__len__()
    srch.save()
    saveL = True

    linkList = list()
    results = list()
    i = 1
    for result in list_result['search']:
        lnk = Link()
        lnk.url = result['url']
        lnk.title = result['title']
        lnk.descr = result['snippet']
        lnk.query = search
        lnk.rank = result['rank']
        linkList.append(lnk)

        lnkres = SearchResult()
        lnkres.url = lnk.url
        lnkres.snippet = lnk.descr
        lnkres.searchID = srch
        lnkres.rank = lnk.rank
        lnkres.title = lnk.title
        lnkres.value = result['value']
        lnkres.save()
        results.append(lnkres)

    matrix = [[0 for x in range(results.__len__())] for y in range(results.__len__())]
    url = 'http://localhost:10000/diversity/?query='+urllib.quote(search)+'&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()
        leng = results.__len__()
        rank1 = dist['rank1']
        rank2 = dist['rank2']
        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

    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[i][j]
    #Obtaining the ILD result for both lists (it will be the same in first instance
    ild = Diversity.calculateILD(ILDMatrix)

    context = {'serverName' : request.META['SERVER_NAME'], 'serverPort' : request.META['SERVER_PORT'],'query2': search,  'query': urllib.quote(search), 'linkList': linkList, 'diversityList': linkList, 'ildRankSym' : ild, 'ildDiversity' : ild }
    return render(request, 'evaluation/evaldiversity.html', context)
Ejemplo n.º 4
0
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)
Ejemplo n.º 5
0
def evaldoDiversity(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")
    ws = Webservice()
    list_result = ws.call_ws_search(search, False, request.META['REMOTE_ADDR'],
                                    request.META['HTTP_USER_AGENT'])

    #Obtaining the results
    url = 'http://localhost:10000/search?query=' + urllib.quote(
        search) + '&clientIP=' + request.META['REMOTE_ADDR'] + '&filter=False'

    srch = Search()
    srch.query = search
    srch.numResults = list_result['search'].__len__()
    srch.save()
    saveL = True

    linkList = list()
    results = list()
    i = 1
    for result in list_result['search']:
        lnk = Link()
        lnk.url = result['url']
        lnk.title = result['title']
        lnk.descr = result['snippet']
        lnk.query = search
        lnk.rank = result['rank']
        linkList.append(lnk)

        lnkres = SearchResult()
        lnkres.url = lnk.url
        lnkres.snippet = lnk.descr
        lnkres.searchID = srch
        lnkres.rank = lnk.rank
        lnkres.title = lnk.title
        lnkres.value = result['value']
        lnkres.save()
        results.append(lnkres)

    matrix = [[0 for x in range(results.__len__())]
              for y in range(results.__len__())]
    url = 'http://localhost:10000/diversity/?query=' + urllib.quote(
        search) + '&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()
        leng = results.__len__()
        rank1 = dist['rank1']
        rank2 = dist['rank2']
        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

    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[i][j]
    #Obtaining the ILD result for both lists (it will be the same in first instance
    ild = Diversity.calculateILD(ILDMatrix)

    context = {
        'serverName': request.META['SERVER_NAME'],
        'serverPort': request.META['SERVER_PORT'],
        'query2': search,
        'query': urllib.quote(search),
        'linkList': linkList,
        'diversityList': linkList,
        'ildRankSym': ild,
        'ildDiversity': ild
    }
    return render(request, 'evaluation/evaldiversity.html', context)
Ejemplo n.º 6
0
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)
Ejemplo n.º 7
0
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)
Ejemplo n.º 8
0
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)