Пример #1
0
def as_euclidean(doc_id, solr_url='http://dev-search:8983/solr/',
                 core='xwiki', requested_fields='id,sitename_txt,topic_*,wam_i,url,'):
    endpoint = solr_url+core
    doc = get_by_id(doc_id, endpoint)

    if doc is None:
        return None, []  # same diff

    keys = get_topics_sorted_keys(doc)

    if not keys:
        return {}, []

    sort = 'dist(2, vector(%s), vector(%s))' % (", ".join(keys), ", ".join(['%.8f' % doc[key] for key in keys]))

    params = {'wt': 'json',
              'q': '-id:%s AND (%s)' % (doc['id'], " OR ".join(['(%s:*)' % key for key in keys])),
              'sort': sort + ' asc',
              'rows': 20,
              'fl': requested_fields+','+sort}

    response = requests.get('%s/select/' % endpoint, params=params)
    docs = response.json().get('response', {}).get('docs', [])
    map(lambda x: x.__setitem__('score', x[sort]), docs)

    return doc, docs
Пример #2
0
def as_euclidean(doc_id,
                 solr_url='http://dev-search:8983/solr/',
                 core='xwiki',
                 requested_fields='id,sitename_txt,topic_*,wam_i,url,'):
    endpoint = solr_url + core
    doc = get_by_id(doc_id, endpoint)

    if doc is None:
        return None, []  # same diff

    keys = get_topics_sorted_keys(doc)

    if not keys:
        return {}, []

    sort = 'dist(2, vector(%s), vector(%s))' % (", ".join(keys), ", ".join(
        ['%.8f' % doc[key] for key in keys]))

    params = {
        'wt':
        'json',
        'q':
        '-id:%s AND (%s)' %
        (doc['id'], " OR ".join(['(%s:*)' % key for key in keys])),
        'sort':
        sort + ' asc',
        'rows':
        20,
        'fl':
        requested_fields + ',' + sort
    }

    response = requests.get('%s/select/' % endpoint, params=params)
    docs = response.json().get('response', {}).get('docs', [])
    map(lambda x: x.__setitem__('score', x[sort]), docs)

    return doc, docs
Пример #3
0
def as_euclidean(query):
    doc_response = requests.get('%s/select/' % SOLR_URL, params=dict(rows=1, q='id:%s' % query, wt='json')).json()
    doc = doc_response.get('response', {}).get('docs', [None])[0]
    if doc is None:
        return None, []  # same diff

    keys = get_topics_sorted_keys(doc)

    sort = 'dist(2, vector(%s), vector(%s))' % (", ".join(keys), ", ".join(['%.8f' % doc[key] for key in keys]))

    params = {'wt': 'json',
              'q': 'title_en:* AND is_video:true AND -(%s)' % " AND ".join(["%s:0" % key for key in keys]),
              'sort': sort + ' asc',
              'rows': 20,
              'fq': '-id:%s' % doc['id'],
              'fl': 'id,wikititle_en,title_en,topic_*,wam,wid,url,'+sort}

    if request.args.get('nosame'):
        params['q'] += ' AND -wid:'+str(doc['wid'])

    docs = requests.get('%s/select/' % SOLR_URL, params=params).json().get('response', {}).get('docs', [])
    map(lambda x: x.__setitem__('score', x[sort]), docs)

    return doc, docs