def sphinx(self): from fias.sphinxit import search query = search().match('@aoguid "%s"' % self.aoguid, raw=True) result = query.ask() print result items = result['result']['items'] print "!!!!!!!!!!!!!fdfd" print items return items
def get_results(self, request, term, page, context): from fias.sphinxit import search query = search().match(term + '*').order_by('aolevel', 'asc').limit(0, 20) result = query.ask() items = result['result']['items'] if len(items): return ( NO_ERR_RESP, False, ((l['aoguid'], l['fullname'], {'level': l['aolevel']}) for l in items) ) return EMPTY_RESULT
def sphinx_filter(self, request, queryset, view): from fias.sphinxit import search page_size = view.get_paginate_by() page_query_param = request.QUERY_PARAMS.get(view.page_kwarg) page = page_query_param or 1 try: page = int(page) if page <= 0: page = 1 except ValueError: page = 1 term = '*,'.join(self.get_search_terms(request)) query = search().match(term + '*').options(field_weights={ 'formalname': 100, 'fullname': 80 }).limit(0, (page + 1) * page_size) # запросим на 1 страницу больше # установим ограничение по родительскому объекту parent_filter_param = request.QUERY_PARAMS.get('parentguid') if parent_filter_param: query = query.match('@parentguid ' + parent_filter_param) # установим ограничение по уровням level_filter_param = request.QUERY_PARAMS.get('aolevel') if level_filter_param: query = query.filter(aolevel__in=level_filter_param.split(',')) #Hack to bypass bug in sphixit. https://github.com/semirook/sphinxit/issues/16 query._nodes.OrderBy.orderings = [u'item_weight DESC'] result = query.ask() items = result['result']['items'] aoguids = [item['aoguid'] for item in items] if len(aoguids): return queryset.filter(aoguid__in=aoguids) else: return super(AddressScanFilter, self).filter_queryset(request, queryset, view)
def sphinx_filter(self, request, queryset, view): from fias.sphinxit import search page_size = view.get_paginate_by() page_query_param = request.QUERY_PARAMS.get(view.page_kwarg) page = page_query_param or 1 try: page = int(page) if page <= 0: page = 1 except ValueError: page = 1 term = '*,'.join(self.get_search_terms(request)) query = search().match(term + '*').options( field_weights={'formalname': 100, 'fullname': 80} ).limit(0, (page + 1) * page_size) # запросим на 1 страницу больше # установим ограничение по родительскому объекту parent_filter_param = request.QUERY_PARAMS.get('parentguid') if parent_filter_param: query = query.match('@parentguid '+parent_filter_param) # установим ограничение по уровням level_filter_param = request.QUERY_PARAMS.get('aolevel') if level_filter_param: query = query.filter(aolevel__in=level_filter_param.split(',')) #Hack to bypass bug in sphixit. https://github.com/semirook/sphinxit/issues/16 query._nodes.OrderBy.orderings = [u'item_weight DESC'] result = query.ask() items = result['result']['items'] aoguids = [item['aoguid'] for item in items] if len(aoguids): return queryset.filter(aoguid__in=aoguids) else: return super(AddressScanFilter, self).filter_queryset(request, queryset, view)
def get_results(self, request, term, page, context): from fias.sphinxit import search query = search().match(term + '*').options(field_weights={'formalname': 100, 'fullname': 80}).limit(0, 50) #Hack to bypass bug in sphixit. https://github.com/semirook/sphinxit/issues/16 query._nodes.OrderBy.orderings = [u'item_weight DESC', u'weight() DESC'] result = query.ask() items = result['result']['items'] if len(items): return ( NO_ERR_RESP, False, ((l['aoguid'], l['fullname'], {'level': l['aolevel']}) for l in items) ) return EMPTY_RESULT
def get_results(self, request, term, page, context): from fias.sphinxit import search query = search().match(term + '*').options(field_weights={ 'formalname': 100, 'fullname': 80 }).limit(0, 50) #Hack to bypass bug in sphixit. https://github.com/semirook/sphinxit/issues/16 query._nodes.OrderBy.orderings = [ u'item_weight DESC', u'weight() DESC' ] result = query.ask() items = result['result']['items'] if len(items): return (NO_ERR_RESP, False, ((l['aoguid'], l['fullname'], { 'level': l['aolevel'] }) for l in items)) return EMPTY_RESULT