当我在PyPI中搜索"XML解析“时,匹配的结果会根据”权重“列出。当我把鼠标放在“权重”上时,它会说“按字段加权的搜索词的出现(名称、摘要、关键词、描述、作者、维护者)”。
谢谢。
发布于 2015-02-24 00:48:08
有趣的问题!我克隆了pypi储存库并搜索了“权重”,这给了我这一行:
./templates/index.pt:15: <th tal:condition="exists:data/scores"><u title="Occurrence of search term weighted by field (name, summary, keywords, description, author, maintainer)">Weight*</u></th>在此基础上,我搜索了“分数”,这使我找到了search函数。在该函数中,它定义了赋予不同列的权重:
columns = [
('name', 4), # doubled for exact (case-insensitive) match
('summary', 2),
('keywords', 2),
('description', 1),
('author', 1),
('maintainer', 1),
]因此,如果您的搜索项出现在包的名称中,它将得到4分,如果它出现在摘要中,则会得到2分,依此类推。它计算每个术语的这个值,然后把它们加起来。
在您的示例中,对于"XML解析“,顶部的包是Products.ParsedXML。分数是这样计算的:
而18确实是搜索结果页面上的得分。
因此,要获得最好的分数,您需要每个字段匹配所需的搜索词(AKA "关键词填充")。如果你想发布一个软件包,我不建议你试着玩这个系统。打分的算法很简单,因为它依赖于诚实的人。如果每个人都试图在这些字段中添加额外的关键字以获得更高的分数,那将是一片混乱,最终会给出更糟糕的搜索结果。
发布于 2017-04-03 13:11:56
jobskills = {'java': 10, 'python': 20, 'jquery': 5}
candidateskills = ['python', 'java','angular']
foundskills={k:jobskills[k] for k in candidateskills if k in jobskills}
print sum(foundskills.values())https://stackoverflow.com/questions/28685680
复制相似问题