当我在
PyPI中搜索“XML解析”时,匹配的结果根据“权重”列出.当我将鼠标移到“重量”上时,它会显示“按字段加权的搜索词的出现(名称,摘要,关键字,描述,作者,维护者)”.
>“按字段加权(名称,摘要,关键字,描述,作者,维护者)”是什么意思?
>理想情况下,排名较高的套餐最有可能比排名更低的套餐更好吗?
谢谢.
最佳答案 有趣的问题!我克隆了
pypi repository并搜索了“重量”,这给了我这条线:
./templates/index.pt:15:
Weight*然后基于我搜索“得分”,这导致我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.得分的计算方式如下:
>名称:“Products.ParsedXML”= 4 4 = 8
>摘要:“解析的XML允许你……”= 2 2 = 4
>关键字:“parsedxml xml zope2”= 2 2 = 4
>描述:“解析的XML允许你……”= 1 1 = 2
>作者:“Zope社区,以及其他各方贡献者”= 0
>维护者:(空)= 0
>总计= 8 4 4 2 0 0 = 18
18确实是搜索结果页面上的得分.
因此,为了获得最佳分数,您需要让每个字段都匹配所需的搜索条件(AKA“keyword stuffing”).如果你想发布一个软件包我不建议你尝试游戏系统.评分算法很简单,因为它依赖于人们诚实.如果每个人都试图在这些字段中添加额外的关键字以获得更高的分数,那将是一团糟,最终会给搜索结果带来更糟糕的结果.