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