tweak search scoring for better results, i think
This commit is contained in:
@@ -160,12 +160,13 @@ def search_rank(q: str = ''):
|
|||||||
qs = q.lower().strip().split() # split query by spaces and lowercase
|
qs = q.lower().strip().split() # split query by spaces and lowercase
|
||||||
|
|
||||||
pdb = get_papers()
|
pdb = get_papers()
|
||||||
match = lambda s: sum(s.lower().count(qp) for qp in qs)
|
match = lambda s: sum(min(3, s.lower().count(qp)) for qp in qs)
|
||||||
|
matchu = lambda s: sum(int(s.lower().count(qp) > 0) for qp in qs)
|
||||||
pairs = []
|
pairs = []
|
||||||
for pid, p in pdb.items():
|
for pid, p in pdb.items():
|
||||||
score = 0.0
|
score = 0.0
|
||||||
score += 5.0 * match(' '.join([a['name'] for a in p['authors']]))
|
score += 10.0 * matchu(' '.join([a['name'] for a in p['authors']]))
|
||||||
score += 10.0 * match(p['title'])
|
score += 20.0 * matchu(p['title'])
|
||||||
score += 1.0 * match(p['summary'])
|
score += 1.0 * match(p['summary'])
|
||||||
if score > 0:
|
if score > 0:
|
||||||
pairs.append((score, pid))
|
pairs.append((score, pid))
|
||||||
|
|||||||
Reference in New Issue
Block a user