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
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
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