我有一个包含页面和标签的程序,我想添加一个related pages
功能。
规则是页面将按它们共享的标签数进行排名。
所以:
[
{ page: 'one', tags: ['a','b','c'] },
{ page: 'two', tags: ['a','b','c'] },
{ page: 'three', tags: ['a','b'] },
{ page: 'four', tags: ['a'] },
{ page: 'five', tags: ['z','w','y'] }
]
与页面one
相关的页面顺序为['two', 'three', 'four']
。
我已经创建了一个pg_search_scope
,如下所示:
class Tag
has_many :pages
end
class Page
has_many :tags
pg_search_scope :search_tags,
associated_against: { tags: :value },
using: {
tsearch: { any_word: true }
}
end
所以我现在的问题是:如何排序search_tags
的结果?