当我在PyPI中搜索“XML解析”时,匹配的结果将根据“权重”列出。当我将鼠标移到“重量”上时,它会显示“按字段加权的搜索词的出现(名称,摘要,关键字,描述,作者,维护者)”。
“按字段加权(名称,摘要,关键字,说明,作者,维护者)”是什么意思?
理想情况下,排名较高的套餐最有可能比排名较低的套餐更好吗?
感谢。
答案 0 :(得分:4)
有趣的问题!我克隆了pypi repository并搜索了#34; weight",这给了我这一行:
./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>
然后根据我搜索&#34;得分&#34;,这导致我进入search
功能。在该函数中,它定义了赋予不同列的权重:
columns = [
('name', 4), # doubled for exact (case-insensitive) match
('summary', 2),
('keywords', 2),
('description', 1),
('author', 1),
('maintainer', 1),
]
因此,如果您的搜索字词出现在软件包的名称中,则得分为4,如果它出现在摘要中,则得分为2,依此类推。它为每个术语计算这个,然后将它们全部加起来。
在您的示例中,对于&#34; XML解析&#34;,顶部包是Products.ParsedXML。分数计算如下:
18 确实是搜索结果页面上的得分。
因此,为了获得最佳分数,您需要让每个字段都匹配所需的搜索字词(AKA&#34; keyword stuffing&#34;)。如果您考虑发布一个软件包,我建议您尽量尝试游戏系统。评分算法很简单,因为它依赖于人是诚实的。如果每个人都试图在这些字段中添加额外的关键字以获得更高的分数,那将是一团糟,最终会给搜索结果带来更糟糕的效果。
答案 1 :(得分:-2)
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())