Peewee rank() 方法给出负分。它是为了这样做而设计的吗?
Peewee rank() method giving negative scores. Is it designed to do so?
来自 peewee 文档:
Generate an expression that will calculate and return the quality of
the search match. This rank can be used to sort the search results.
The lower the rank, the better the match.
我目前正在测试 Peewee 提供的全文搜索功能。文档提到分数越低匹配越好,但我得到的只是负分,它是为了 return 负分而设计的吗?
查询:
query = (models.Post
.select(models.Post.title, models.Post.content, models.FTSPost.rank().alias('score'))
.join(models.FTSPost, on=(models.Post.id == models.FTSPost.post_id))
.where(models.FTSPost.match(search_query))
.order_by(models.SQL('score').desc()))
是的,它给出负分,因此当您按排名(升序)排序时,您会得到正确顺序的结果。
这可能与您在我的博客上找到的内容有冲突,例如,因为早期版本没有这样做并且需要按分数降序排列。
但是,基本上,如果您使用的是较新版本的 peewee,只需按分数升序排序即可。
来自 peewee 文档:
Generate an expression that will calculate and return the quality of the search match. This rank can be used to sort the search results. The lower the rank, the better the match.
我目前正在测试 Peewee 提供的全文搜索功能。文档提到分数越低匹配越好,但我得到的只是负分,它是为了 return 负分而设计的吗?
查询:
query = (models.Post
.select(models.Post.title, models.Post.content, models.FTSPost.rank().alias('score'))
.join(models.FTSPost, on=(models.Post.id == models.FTSPost.post_id))
.where(models.FTSPost.match(search_query))
.order_by(models.SQL('score').desc()))
是的,它给出负分,因此当您按排名(升序)排序时,您会得到正确顺序的结果。
这可能与您在我的博客上找到的内容有冲突,例如,因为早期版本没有这样做并且需要按分数降序排列。
但是,基本上,如果您使用的是较新版本的 peewee,只需按分数升序排序即可。