Contentful全文搜索按相关性排序的实现问题咨询
Contentful全文搜索按相关性排序的实现问题咨询
嗨,我来帮你解决这个Contentful全文搜索排序的问题哈!
你遇到的情况其实是Contentful Search API的默认排序逻辑导致的——如果不指定order参数,它并不会自动按全文搜索的相关性来排序,反而默认是按内容的更新时间(sys.updatedAt)或创建时间(sys.createdAt)降序排列,这就是为什么你两个查询结果看起来都是按更新时间排序的原因。
要实现按相关性排序,你需要在查询里显式指定按搜索得分(score)降序排列,这个得分是Contentful根据你的query和内容匹配度计算出来的相关性分值。调整后的查询应该是这样的:
{ query: 'test', 'sys.contentType.sys.id[in]': 'article,supplierShowcase,landingPage', limit: 10, skip: 0, order: '-score' }
这里的-score表示按相关性得分从高到低排序,这样返回的结果就会优先展示和你的搜索词test匹配度最高的内容啦。
另外要注意,如果你同时需要结合相关性和更新时间排序(比如先按相关性,再按更新时间),可以把order设置为'-score,-sys.updatedAt',这样会先按相关性排序,相关性相同的内容再按更新时间降序排列。
你试试这个调整后的查询,应该就能得到你想要的按相关性排序的结果了!
内容来源于stack exchange
相关产品推荐
相关产品推荐

