示例#1
0
    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."
示例#2
0
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()
示例#3
0
 def setUp(self):
     super(CompositeIndexerTest, self).setUp()
     self.indexer = CompositeIndexer(Entry.indexer, Comment.indexer)