Exemple #1
0
def searchservice(request):
    q = urllib.unquote(request.path.split('/')[2].split(
        '_')[0])  #Example: unquote('/%7Econnolly/') yields '/~connolly/'.
    q = q.strip(
    )  #Return a copy of the string with the leading and trailing characters removed.
    article = q
    resource = defineIndex()
    index = resource['index']
    results = []
    if q != '':
        q = q.split(' ')
        finalq = ' AND text:'.join(
            q)  #Example 'juan AND text:carlos AND text:cayetano'
        finalq += "*"
        searchresults = index.search('text:%s' % finalq,
                                     fetch_fields=[
                                         'text', 'img', 'description', 'tags',
                                         'state', 'price'
                                     ])
        cats = categories_matches()
        return render_to_response('search/results.html', {
            'searchresults': searchresults,
            'article': article,
            'cats': cats
        },
                                  context_instance=RequestContext(request))
    return HttpResponse('Sin Resultados')
Exemple #2
0
def searchservice(request):
    q = urllib.unquote(request.path.split('/')[2].split('_')[0]) #Example: unquote('/%7Econnolly/') yields '/~connolly/'.
    q = q.strip() #Return a copy of the string with the leading and trailing characters removed. 
    article = q
    resource = defineIndex() 
    index = resource['index']
    results = [] 
    if q != '': 
        q = q.split(' ') 
        finalq = ' AND text:'.join(q) #Example 'juan AND text:carlos AND text:cayetano'
        finalq += "*" 
        searchresults = index.search( 'text:%s' % finalq , 
            fetch_fields=['text', 'img','description', 'tags','state', 'price']) 
        cats = categories_matches()
        return render_to_response('search/results.html', 
            {'searchresults' : searchresults, 'article' : article, 'cats' : cats }, 
            context_instance = RequestContext(request) )
    return HttpResponse('Sin Resultados') 
Exemple #3
0
def search_filters(request, filters):
    from howmuch.search.functions import * 

    index = defineIndex()['index']

    article = ""
    filters = convert_filters(filters)
    dic={}
    custom_filter=0
    minrange=None
    maxrange=None
    if get_state_filter(filters) != None:
        dic.update({'state':[get_state_filter(filters)]})
    if get_rangePrice_filter(filters) != None:
        if get_rangePrice_filter(filters) != "0to500" and get_rangePrice_filter(filters) != "500to1000" and get_rangePrice_filter(filters) != "1000to5000" and get_rangePrice_filter(filters) != "gte5000":
            custom_filter=1
            if get_rangePrice_filter(filters).split("to")[0] != '':
                minrange=get_rangePrice_filter(filters).split("to")[0]
            if get_rangePrice_filter(filters).split("to")[1] != '':
                maxrange=get_rangePrice_filter(filters).split("to")[1]
            if minrange>maxrange and minrange != None and maxrange != None:
                temp=minrange
                minrange=maxrange
                maxrange=temp
        else:
            dic.update({'rangePrice':[get_rangePrice_filter(filters)]})
    if get_category_filter(filters) != None:
        dic.update({'category':[get_category_filter(filters)]})
    if custom_filter == 0:
        searchresults = index.search('all:1',
            category_filters=dic,
            fetch_fields=['text', 'img','description', 'tags','state', 'price'])
    else:
        searchresults = index.search('all:1',
            category_filters=dic,
            fetch_fields=['text', 'img','description', 'tags','state', 'price'])
        lst=[]
        if minrange != None:
            if maxrange != None:
                for x in searchresults['results']:
                    if int(x['price']) > int(maxrange) or int(x['price']) < int(minrange):
                        lst.append(x)
            else:
                for x in searchresults['results']:
                    if int(x['price']) < int(minrange):
                        lst.append(x)
        else:
            if maxrange != None:
                for x in searchresults['results']:
                    if int(x['price']) > int(maxrange):
                        lst.append(x)
        for y in lst:
            searchresults['results'].remove(y)
    cats = categories_matches()
    if searchresults['matches'] == 0:
        return render_to_response('search/results.html',
            {'searchresults':searchresults, 'article' : article, 'filtros' : True, 'filters' : filters, 'cats' : cats },
            context_instance=RequestContext(request))
    else:
        if get_rangePrice_filter(filters) != None:
            return render_to_response('search/results.html',
            {'searchresults':searchresults, 'article' : article, 'filtros' : True, 'filters' : filters, 'cats' : searchresults['facets']['category'].items(), 'rangePrice' : searchresults['facets']['rangePrice'].items() },
            context_instance=RequestContext(request))
        else:
            return render_to_response('search/results.html',
            {'searchresults':searchresults, 'article' : article, 'filtros' : True, 'filters' : filters, 'cats' : cats, 'rangePrice' : searchresults['facets']['rangePrice'].items() },
            context_instance=RequestContext(request))
    return HttpResponse('Sin Resultados')
Exemple #4
0
def search_filters(request, filters):
    from howmuch.search.functions import *

    index = defineIndex()['index']

    article = ""
    filters = convert_filters(filters)
    dic = {}
    custom_filter = 0
    minrange = None
    maxrange = None
    if get_state_filter(filters) != None:
        dic.update({'state': [get_state_filter(filters)]})
    if get_rangePrice_filter(filters) != None:
        if get_rangePrice_filter(
                filters) != "0to500" and get_rangePrice_filter(
                    filters) != "500to1000" and get_rangePrice_filter(
                        filters) != "1000to5000" and get_rangePrice_filter(
                            filters) != "gte5000":
            custom_filter = 1
            if get_rangePrice_filter(filters).split("to")[0] != '':
                minrange = get_rangePrice_filter(filters).split("to")[0]
            if get_rangePrice_filter(filters).split("to")[1] != '':
                maxrange = get_rangePrice_filter(filters).split("to")[1]
            if minrange > maxrange and minrange != None and maxrange != None:
                temp = minrange
                minrange = maxrange
                maxrange = temp
        else:
            dic.update({'rangePrice': [get_rangePrice_filter(filters)]})
    if get_category_filter(filters) != None:
        dic.update({'category': [get_category_filter(filters)]})
    if custom_filter == 0:
        searchresults = index.search('all:1',
                                     category_filters=dic,
                                     fetch_fields=[
                                         'text', 'img', 'description', 'tags',
                                         'state', 'price'
                                     ])
    else:
        searchresults = index.search('all:1',
                                     category_filters=dic,
                                     fetch_fields=[
                                         'text', 'img', 'description', 'tags',
                                         'state', 'price'
                                     ])
        lst = []
        if minrange != None:
            if maxrange != None:
                for x in searchresults['results']:
                    if int(x['price']) > int(maxrange) or int(
                            x['price']) < int(minrange):
                        lst.append(x)
            else:
                for x in searchresults['results']:
                    if int(x['price']) < int(minrange):
                        lst.append(x)
        else:
            if maxrange != None:
                for x in searchresults['results']:
                    if int(x['price']) > int(maxrange):
                        lst.append(x)
        for y in lst:
            searchresults['results'].remove(y)
    cats = categories_matches()
    if searchresults['matches'] == 0:
        return render_to_response('search/results.html', {
            'searchresults': searchresults,
            'article': article,
            'filtros': True,
            'filters': filters,
            'cats': cats
        },
                                  context_instance=RequestContext(request))
    else:
        if get_rangePrice_filter(filters) != None:
            return render_to_response(
                'search/results.html', {
                    'searchresults': searchresults,
                    'article': article,
                    'filtros': True,
                    'filters': filters,
                    'cats': searchresults['facets']['category'].items(),
                    'rangePrice':
                    searchresults['facets']['rangePrice'].items()
                },
                context_instance=RequestContext(request))
        else:
            return render_to_response(
                'search/results.html', {
                    'searchresults': searchresults,
                    'article': article,
                    'filtros': True,
                    'filters': filters,
                    'cats': cats,
                    'rangePrice':
                    searchresults['facets']['rangePrice'].items()
                },
                context_instance=RequestContext(request))
    return HttpResponse('Sin Resultados')