def do_usecomposite(self, indexes): """ Changes current index to composition of given indexers """ from djapian.indexer import CompositeIndexer indexers = [] for index in indexes.split(' '): indexers.append(self._get_indexer(index.strip())) self._current_index = CompositeIndexer(*[i[2] for i in indexers]) print "Using composition of:" for indexer in indexers: space, model, indexer = indexer print " `%s:%s:%s`" % (space, utils.model_name(model), indexer) print "indexes."
def ajax_main_search(request): if xapian is None: result = [] return HttpResponse(simplejson.dumps(result, mimetype="text/javascript")) if request.is_ajax(): if request.POST: try: search = request.POST['searchVal'] if " " in search: search = search.replace(" ", " OR ") if "." in search: search = search.replace(".", ' AND ') flags = xapian.QueryParser.FLAG_PARTIAL | xapian.QueryParser.FLAG_WILDCARD \ | xapian.QueryParser.FLAG_BOOLEAN | xapian.QueryParser.FLAG_PHRASE indexers = [Entry.indexer, Gallery.indexer] comp = CompositeIndexer(*indexers) res = comp.search(search).flags(flags) rlist = [dict(name=x.instance.__unicode__(), ct_id=ContentType.objects.get_for_model(x.instance).pk, ct=ContentType.objects.get_for_model(x.instance).name, obj_id=x.instance.pk, displayname=x.instance.title, url=x.instance.get_absolute_url() or None) for x in res] return HttpResponse(simplejson.dumps(rlist), mimetype='text/javascript') except: return HttpResponseBadRequest() else: return HttpResponse(simplejson.dumps({'error':True}, mimetype="text/javascript")) else: # can probably change to redirect to a search # page view as well return HttpResponseBadRequest()
def setUp(self): super(CompositeIndexerTest, self).setUp() self.indexer = CompositeIndexer(Entry.indexer, Comment.indexer)