Ejemplo n.º 1
0
def alt_search(site_id, request_q, action):
    return_list = []
    alt_site_search_set = SiteAlternateSearches.objects.filter(site=site_id).order_by('site_order')
    alt_query_string, alt_query_dict = solr_query(request_q, 'extAltSearch', "")
    for alt_site in alt_site_search_set:
        alt_preferred_results_url = ''
        if alt_site.alt_site_id:
            alt_search_set = alt_site_lookup(alt_site.alt_site_id)
            local_querystr, local_querydict = solr_query(request_q, 'extAltSearch', alt_search_set)
            altbaseurl = '%ssearch/select/?wt=json' % SOLR_URL
            ext_query_str = local_querystr.replace(alt_search_set, '')
            alt_preferred_results_url = '%sresults?%s' % (alt_site.alt_site_url, ext_query_str)
            #        different because we're doing an internal lookup
        else:
            local_querystr = alt_query_string
            altbaseurl = alt_site.alt_site_url
            altresultsurl = altbaseurl  # the same url because the multisearch and the user are searching externally
        alt_dict = {'label': alt_site.alt_site_label}
        if action == 'count':
            altdocscount, alt_docs_url, altdocsresults = get_alt_search(
                local_querystr,
                altbaseurl,
                altresultsurl,
                action,
                ''
            )
            alt_dict.update({'count': altdocscount})
            alt_dict.update({'url': alt_docs_url})
            return_list.append(alt_dict)
        elif action == 'results':
            altdocscount, alt_docs_url, altdocsresults = get_alt_search(
                local_querystr,
                altbaseurl,
                altresultsurl,
                action,
                alt_site.alt_site_syntax
            )
            alt_dict.update({'count': altdocscount})
            if alt_preferred_results_url:
                alt_dict.update({'url': alt_preferred_results_url})
            else:
                alt_dict.update({'url': alt_docs_url})
            alt_dict.update({'results': altdocsresults})
            if int(altdocscount) > 3:
                alt_dict.update({'more': True})
            else:
                alt_dict.update({'more': False})

            return_list.append(alt_dict)
    return return_list
Ejemplo n.º 2
0
def get_count(request, search_set):
    query_str, query_dict = solr_query(request, 'count', search_set)
    count = '0'
    url = solr + query_str
    solr_result = get_solr(url, 'json')
    if isinstance(solr_result, dict):
        count = solr_result['response']['numFound']
    return count
Ejemplo n.º 3
0
def get_count(request, search_set):
    query_str, query_dict = solr_query(request, 'count', search_set)
    count = '0'
    url = solr + query_str
    solr_result = get_solr(url, 'json')
    if isinstance(solr_result, dict):
        count = solr_result['response']['numFound']
    return count
Ejemplo n.º 4
0
def get_kml_count(request, search_set):
    kml_query, query_dict = solr_query(request, 'kml', search_set)
    if kml_query:
        url = solr + kml_query
        kml_response = get_solr(url, 'json')
        if isinstance(kml_response, dict):
            kml_count = int(kml_response['response']['numFound'])
        else:
            kml_count = 0
    else:
        kml_count = 0
    return kml_count
Ejemplo n.º 5
0
def query_solr_url(request, output_format, xml_type, search_set):
    """
    generate the appropriate URLs for requests
    execute the searches against solr, or external datasets
    """
    query_str, query_dict = solr_query(request, xml_type, search_set)
    if output_format == 'xml':
        url = solr_xml + query_str
    else:
        url = solr + query_str
    solr_result = get_solr(url, output_format)
    return solr_result, query_dict
Ejemplo n.º 6
0
def get_kml_count(request, search_set):
    kml_query, query_dict = solr_query(request, 'kml', search_set)
    if kml_query:
        url = solr + kml_query
        kml_response = get_solr(url, 'json')
        if isinstance(kml_response, dict):
            kml_count = int(kml_response['response']['numFound'])
        else:
            kml_count = 0
    else:
        kml_count = 0
    return kml_count
Ejemplo n.º 7
0
def query_solr_url(request, output_format, xml_type, search_set):
    """
    generate the appropriate URLs for requests
    execute the searches against solr, or external datasets
    """
    query_str, query_dict = solr_query(request, xml_type, search_set)
    if output_format == 'xml':
        url = solr_xml + query_str
    else:
        url = solr + query_str
    solr_result = get_solr(url, output_format)
    return solr_result, query_dict