コード例 #1
0
ファイル: search.py プロジェクト: GeoffFroh/ddr-public
def term_query( request, field, term ):
    """Results of a search query.
    """
    # prep query for elasticsearch
    terms_display = {'field':field, 'term':term}
    terms = {field:term}
    facet = faceting.get_facet(field)
    for t in facet['terms']:
        if t['id'] == term:
            try:
                terms_display['term'] = t['title_display']
            except:
                terms_display['term'] = t['title']
            break
    filters = {}
    fields = models.all_list_fields()
    sort = {'record_created': request.GET.get('record_created', ''),
            'record_lastmod': request.GET.get('record_lastmod', ''),}
    # do the query
    results = elasticsearch.query(settings.ELASTICSEARCH_HOST_PORT, settings.DOCUMENT_INDEX,
                                  term=terms, filters=filters,
                                  fields=fields, sort=sort)
    hits = models.massage_query_results(results)
    paginator = Paginator(hits, settings.RESULTS_PER_PAGE)
    page = paginator.page(request.GET.get('page', 1))
    return render_to_response(
        'ui/search/results.html',
        {'paginator': paginator,
         'page': page,
         'terms': terms_display,
         'filters': filters,
         'sort': sort,},
        context_instance=RequestContext(request, processors=[])
    )
コード例 #2
0
def results(request):
    """Results of a search query.
    """
    # prep query for elasticsearch
    model = request.GET.get('model', None)
    q = django_urlquote(request.GET.get('query', ''))
    filters = {}
    fields = models.all_list_fields()
    sort = {
        'record_created': request.GET.get('record_created', ''),
        'record_lastmod': request.GET.get('record_lastmod', ''),
    }
    # do the query
    results = elasticsearch.query(settings.ELASTICSEARCH_HOST_PORT,
                                  settings.DOCUMENT_INDEX,
                                  query=q,
                                  filters=filters,
                                  fields=fields,
                                  sort=sort)
    hits = models.massage_query_results(results)
    paginator = Paginator(hits, settings.RESULTS_PER_PAGE)
    page = paginator.page(request.GET.get('page', 1))
    return render_to_response('ui/search/results.html', {
        'paginator': paginator,
        'page': page,
        'query': q,
        'filters': filters,
        'sort': sort,
    },
                              context_instance=RequestContext(request,
                                                              processors=[]))
コード例 #3
0
ファイル: search.py プロジェクト: GeoffFroh/ddr-public
def results( request ):
    """Results of a search query.
    """
    # prep query for elasticsearch
    model = request.GET.get('model', None)
    q = django_urlquote(request.GET.get('query', ''))
    filters = {}
    fields = models.all_list_fields()
    sort = {'record_created': request.GET.get('record_created', ''),
            'record_lastmod': request.GET.get('record_lastmod', ''),}
    # do the query
    results = elasticsearch.query(settings.ELASTICSEARCH_HOST_PORT, settings.DOCUMENT_INDEX,
                                  query=q, filters=filters,
                                  fields=fields, sort=sort)
    hits = models.massage_query_results(results)
    paginator = Paginator(hits, settings.RESULTS_PER_PAGE)
    page = paginator.page(request.GET.get('page', 1))
    return render_to_response(
        'ui/search/results.html',
        {'paginator': paginator,
         'page': page,
         'query': q,
         'filters': filters,
         'sort': sort,},
        context_instance=RequestContext(request, processors=[])
    )
コード例 #4
0
ファイル: models.py プロジェクト: GeoffFroh/ddr-public
 def entities( self, index=0, size=DEFAULT_SIZE ):
     entities = []
     results = elasticsearch.query(HOST, index=settings.DOCUMENT_INDEX, model='entity',
                                   query='id:"%s"' % self.id,
                                   fields=ENTITY_LIST_FIELDS,
                                   first=index, size=size,
                                   sort=ENTITY_LIST_SORT,)
     for m in massage_query_results(results):
         o = build_object(Entity(), m['id'], m)
         entities.append(o)
     return entities
コード例 #5
0
ファイル: models.py プロジェクト: GeoffFroh/ddr-public
 def collections( self ):
     if not self._collections:
         self._collections = []
         results = elasticsearch.query(HOST, index=settings.DOCUMENT_INDEX, model='collection',
                                       query='id:"%s"' % self.id,
                                       fields=COLLECTION_LIST_FIELDS,
                                       sort=COLLECTION_LIST_SORT,)
         for m in massage_query_results(results):
             o = build_object(Collection(), m['id'], m)
             self._collections.append(o)
     return self._collections
コード例 #6
0
ファイル: models.py プロジェクト: GeoffFroh/ddr-public
 def files( self, index=0, size=DEFAULT_SIZE ):
     """Gets all the files in a collection; paging optional.
     """
     files = []
     results = elasticsearch.query(HOST, index=settings.DOCUMENT_INDEX, model='file',
                                   query='id:"%s"' % self.id,
                                   fields=FILE_LIST_FIELDS,
                                   first=index, size=size,
                                   sort=FILE_LIST_SORT)
     for m in massage_query_results(results):
         o = build_object(File(), m['id'], m)
         files.append(o)
     return files
コード例 #7
0
 def collections(self):
     if not self._collections:
         self._collections = []
         results = elasticsearch.query(
             HOST,
             index=settings.DOCUMENT_INDEX,
             model='collection',
             query='id:"%s"' % self.id,
             fields=COLLECTION_LIST_FIELDS,
             sort=COLLECTION_LIST_SORT,
         )
         for m in massage_query_results(results):
             o = build_object(Collection(), m['id'], m)
             self._collections.append(o)
     return self._collections
コード例 #8
0
 def files(self, index=0, size=DEFAULT_SIZE):
     """Gets all the files in a collection; paging optional.
     """
     files = []
     results = elasticsearch.query(HOST,
                                   index=settings.DOCUMENT_INDEX,
                                   model='file',
                                   query='id:"%s"' % self.id,
                                   fields=FILE_LIST_FIELDS,
                                   first=index,
                                   size=size,
                                   sort=FILE_LIST_SORT)
     for m in massage_query_results(results):
         o = build_object(File(), m['id'], m)
         files.append(o)
     return files
コード例 #9
0
 def entities(self, index=0, size=DEFAULT_SIZE):
     entities = []
     results = elasticsearch.query(
         HOST,
         index=settings.DOCUMENT_INDEX,
         model='entity',
         query='id:"%s"' % self.id,
         fields=ENTITY_LIST_FIELDS,
         first=index,
         size=size,
         sort=ENTITY_LIST_SORT,
     )
     for m in massage_query_results(results):
         o = build_object(Entity(), m['id'], m)
         entities.append(o)
     return entities
コード例 #10
0
ファイル: models.py プロジェクト: GeoffFroh/ddr-public
 def files( self, index=0, size=DEFAULT_SIZE, role=None ):
     """Gets all the files in an entity; paging optional.
     
     @param index: start on this index in result set
     @param size: number of results to return
     @param role: String 'mezzanine' or 'master'
     """
     files = []
     query = 'id:"%s"' % self.id
     if role:
         query = 'id:"%s-%s"' % (self.id, role)
     results = elasticsearch.query(HOST, index=settings.DOCUMENT_INDEX, model='file',
                                   query=query,
                                   fields=FILE_LIST_FIELDS,
                                   first=index, size=size,
                                   sort=FILE_LIST_SORT)
     for m in massage_query_results(results):
         o = build_object(File(), m['id'], m)
         files.append(o)
     return files
コード例 #11
0
def term_query(request, field, term):
    """Results of a search query.
    """
    # prep query for elasticsearch
    terms_display = {'field': field, 'term': term}
    terms = {field: term}
    facet = faceting.get_facet(field)
    for t in facet['terms']:
        if t['id'] == term:
            try:
                terms_display['term'] = t['title_display']
            except:
                terms_display['term'] = t['title']
            break
    filters = {}
    fields = models.all_list_fields()
    sort = {
        'record_created': request.GET.get('record_created', ''),
        'record_lastmod': request.GET.get('record_lastmod', ''),
    }
    # do the query
    results = elasticsearch.query(settings.ELASTICSEARCH_HOST_PORT,
                                  settings.DOCUMENT_INDEX,
                                  term=terms,
                                  filters=filters,
                                  fields=fields,
                                  sort=sort)
    hits = models.massage_query_results(results)
    paginator = Paginator(hits, settings.RESULTS_PER_PAGE)
    page = paginator.page(request.GET.get('page', 1))
    return render_to_response('ui/search/results.html', {
        'paginator': paginator,
        'page': page,
        'terms': terms_display,
        'filters': filters,
        'sort': sort,
    },
                              context_instance=RequestContext(request,
                                                              processors=[]))
コード例 #12
0
 def files(self, index=0, size=DEFAULT_SIZE, role=None):
     """Gets all the files in an entity; paging optional.
     
     @param index: start on this index in result set
     @param size: number of results to return
     @param role: String 'mezzanine' or 'master'
     """
     files = []
     query = 'id:"%s"' % self.id
     if role:
         query = 'id:"%s-%s"' % (self.id, role)
     results = elasticsearch.query(HOST,
                                   index=settings.DOCUMENT_INDEX,
                                   model='file',
                                   query=query,
                                   fields=FILE_LIST_FIELDS,
                                   first=index,
                                   size=size,
                                   sort=FILE_LIST_SORT)
     for m in massage_query_results(results):
         o = build_object(File(), m['id'], m)
         files.append(o)
     return files