Beispiel #1
0
    def _create_search_request(self):
        req = SearchRequest(self.form.q.data)
        
        if self.form.fl.data:
            fields = list(set(self.form.fl.data.split(',') + config.SOLR_SEARCH_REQUIRED_FIELDS))
        else:
            fields = self.user.get_allowed_fields()

        req.set_fields(fields)
            
        if self.form.rows.data:
            req.set_rows(self.form.rows.data)
        else:
            req.set_rows(config.SEARCH_DEFAULT_ROWS)
            
        if self.form.start.data:
            req.set_start(self.form.start.data)
            
        if self.form.sort.data:
            sort_tokens = re.split('[\s,]+', self.form.sort.data)
            # tupleize the list into field,direction pairs
            sort_tokens = zip(*[iter(sort_tokens)] * 2)
            for sort, direction in sort_tokens:
                sort_field = config.SEARCH_SORT_OPTIONS_MAP[sort][0]
                req.add_sort(sort_field, direction)
        else:
            for field, direction in config.API_SOLR_DEFAULT_SORT:
                req.add_sort(field, direction)
                
        if len(self.form.facet.data):
            for facet in self.form.facet.data:
                facet = facet.split(':')
                api_facet_name = facet[0]
                solr_field_name = config.API_SOLR_FACET_FIELDS[api_facet_name]
                if api_facet_name != solr_field_name:
                    # translate api facet name to solr field name in request *and* response
                    # see http://wiki.apache.org/solr/SimpleFacetParameters#key_:_Changing_the_output_key
                    output_key = api_facet_name
                    facet[0] = solr_field_name
                else:
                    output_key = None
                req.add_facet(*facet, output_key=output_key)
        
        if len(self.form.hl.data):
            for hl in self.form.hl.data:
                if ':' in hl:
                    req.add_highlight(*hl.split(':'))
                else:
                    req.add_highlight(hl)
                
        if len(self.form.filter.data):
            for fltr in self.form.filter.data:
                req.add_filter_query(fltr)
                
        if self.form.hlq.data:
            req.set_hlq(self.form.hlq.data)
            
        return req
Beispiel #2
0
 def _create_search_request(self):
     req = SearchRequest(self.form.q.data)
     
     if self.form.fl.data:
         fields = list(set(self.form.fl.data.split(',') + config.SOLR_SEARCH_REQUIRED_FIELDS))
         req.set_fields(fields)
     else:
         req.set_fields(self.user.get_allowed_fields())
         
     if self.form.rows.data:
         req.set_rows(self.form.rows.data)
     else:
         req.set_rows(config.SEARCH_DEFAULT_ROWS)
         
     if self.form.start.data:
         req.set_start(self.form.start.data)
         
     if self.form.sort.data:
         (sort, direction) = self.form.sort.data.split()
         sort_field = config.SOLR_SORT_OPTIONS[sort]
         req.set_sort(sort_field, direction)
     else:
         req.set_sort(*config.API_SOLR_DEFAULT_SORT)
         
     if len(self.form.facet.data):
         for facet in self.form.facet.data:
             facet = facet.split(':')
             api_facet_name = facet[0]
             solr_field_name = config.API_SOLR_FACET_FIELDS[api_facet_name]
             if api_facet_name != solr_field_name:
                 # translate api facet name to solr field name in request *and* response
                 # see http://wiki.apache.org/solr/SimpleFacetParameters#key_:_Changing_the_output_key
                 output_key = api_facet_name
                 facet[0] = solr_field_name
             else:
                 output_key = None
             req.add_facet(*facet, output_key=output_key)
     
     if len(self.form.hl.data):
         for hl in self.form.hl.data:
             req.add_highlight(hl.split(':'))
             
     if len(self.form.filter.data):
         for fltr in self.form.filter.data:
             req.add_filter(fltr)
             
     if self.form.hlq.data:
         req.set_hlq(self.form.hlq.data)
         
     return req
Beispiel #3
0
 def _create_search_request(self):
     q = "identifier:%s OR doi:%s" % (self.record_id, self.record_id)
     req = SearchRequest(q, rows=1)
     
     if self.form.fl.data:
         fields = list(set(self.form.fl.data.split(',') + config.SOLR_SEARCH_REQUIRED_FIELDS))
         req.set_fields(fields)
     else:
         req.set_fields(self.user.get_allowed_fields())
         
     if len(self.form.hl.data):
         for hl in self.form.hl.data:
             hl = hl.split(':')
             req.add_highlight(*hl)
             
     if self.form.hlq.data:
         req.set_hlq(self.form.hlq.data)
         
     return req