def get_jobs(custom_facets=None, exclude_facets=None, jsids=None, default_sqs=None, filters={}, fields=None, facet_limit=250, facet_sort="count", facet_offset=None, mc=1, sort_order='relevance', fl=search_fields): """ Returns 3-tuple containing a DESearchQuerySet object, a set of facet counts that have been filtered, and a set of unfiltered facet counts. The unfiltered facet count object is used by the primary nav box to build items and options. Inputs: :custom_facets: A list of saved searches (Custom Facets) to apply to sqs. Defaults to site's default custom facets set in Middleware :default_sqs: Starting search query set :filters: Dictionary of filter terms in field_name:search_term format The following inputs are Solr parameters. :facet_limit: max number of facets to return per field. -1=unlimited :facet_sort: How to sort facets :facet_offset: offset into the facet list :mc: mincount - Smallest facet size to return """ if default_sqs is not None: sqs = default_sqs else: sqs = DESearchQuerySet() sqs = sqs_apply_custom_facets(custom_facets, sqs, exclude_facets) sqs = _sqs_narrow_by_buid_and_site_package(sqs, buids=jsids) # Limit the retrieved results to only fields that are actually needed. sqs = sqs.fields(fl) sqs = sqs.order_by(sort_order_mapper.get(sort_order, '-score')) #The boost function added to this search query set scales relevancy scores #by a factor of 1/2 at ~6 months (1.8e-11 ms) in all future queries sqs = sqs.bf('recip(ms(NOW/HOUR,salted_date),1.8e-9,1,1)') if fields: sqs = sqs.fields(fields) if facet_offset: sqs = sqs.facet_offset(facet_offset) if facet_limit > 0: sqs = sqs.facet_limit(facet_limit) sqs = sqs.facet_sort(facet_sort).facet_mincount(mc) sqs = sqs.facet("city_slab").facet("state_slab").facet("country_slab")\ .facet("moc_slab").facet("title_slab").facet("full_loc")\ .facet("company_slab").facet("buid").facet("mapped_moc_slab") # When get_jobs is called from job_listing_by_slug_tag, sqs already has site # default facets and filters from URL applied. The call to filter_sqs # concatenates the querystring (q=querystring) with itself, # adding + operators and causing parsing errors for more complex custom # facets. Can't remove now until we verify other views don't rely on # this call to filter_sqs. # Jason McLaughlin 09-07-2012 return filter_sqs(sqs, filters)
def get_jobs(custom_facets=None, exclude_facets=None, jsids=None, default_sqs=None, filters={}, fields=None, facet_limit=250, facet_sort="count", facet_offset=None, mc=1, sort_order='relevance', fl=search_fields, additional_fields=None): """ Returns 3-tuple containing a DESearchQuerySet object, a set of facet counts that have been filtered, and a set of unfiltered facet counts. The unfiltered facet count object is used by the primary nav box to build items and options. Inputs: :custom_facets: A list of saved searches (Custom Facets) to apply to sqs. Defaults to site's default custom facets set in Middleware :default_sqs: Starting search query set :filters: Dictionary of filter terms in field_name:search_term format The following inputs are Solr parameters. :facet_limit: max number of facets to return per field. -1=unlimited :facet_sort: How to sort facets :facet_offset: offset into the facet list :mc: mincount - Smallest facet size to return """ if default_sqs is not None: sqs = default_sqs else: sqs = DESearchQuerySet() sqs = sqs_apply_custom_facets(custom_facets, sqs, exclude_facets) sqs = _sqs_narrow_by_buid_and_site_package(sqs, buids=jsids) sqs = sqs.order_by(sort_order_mapper.get(sort_order, '-score')) # The boost function added to this search query set scales relevancy scores # by a factor of 1/2 at ~6 months (1.8e-11 ms) in all future queries sqs = sqs.bf('recip(ms(NOW/HOUR,salted_date),1.8e-9,1,1)') # Limit the retrieved results to only fields that are actually needed. if fields: field_list = list(fields) else: field_list = list(fl) if additional_fields: field_list = additional_fields + field_list sqs = sqs.fields(field_list) if facet_offset: sqs = sqs.facet_offset(facet_offset) if facet_limit > 0: sqs = sqs.facet_limit(facet_limit) sqs = sqs.facet_sort(facet_sort).facet_mincount(mc) sqs = sqs.facet("city_slab").facet("state_slab").facet("country_slab")\ .facet("moc_slab").facet("title_slab").facet("full_loc")\ .facet("company_slab").facet("buid").facet("mapped_moc_slab") # When get_jobs is called from job_listing_by_slug_tag, sqs already has site # default facets and filters from URL applied. The call to filter_sqs # concatenates the querystring (q=querystring) with itself, # adding + operators and causing parsing errors for more complex custom # facets. Can't remove now until we verify other views don't rely on # this call to filter_sqs. # Jason McLaughlin 09-07-2012 return filter_sqs(sqs, filters)