如何按属性处理相关对象?

时间:2011-02-27 20:39:53

标签: ruby-on-rails search search-engine

我有一个Ruby on Rails模型,它有很多HABTM关系。从本质上讲,我正在制作一个以滑板为主题的视频分享网站。每个视频都有许多通过HABTM的地点:位置,滑板,标签,位置,音乐,设备,地点,区域等......它还有一些重要的类属性:标题,描述等......

这里的想法是我的客户希望每个视频播放器使用所有以前提到的描述性数据提供“相关视频”。此外,信息应加权(类似标题优先于类似标签)。

我试图找到一种很好的方法来实现Google SiteSearch来处理繁琐的工作,但找不到一个好的搜索词语法,即:

inurl: example.com/videos related:example.com/videos/4638872 

不幸的是,这实际上并不起作用......

2 个答案:

答案 0 :(得分:0)

那么,您是否正在寻找用于查找视频的搜索字词?我对这个问题不太确定,但如果是的话,这对你有用吗?

site:example.com inurl:videos

答案 1 :(得分:0)

通过使用雪貂进行关键词爆炸搜索来解决这个问题。

def related
    string = self.name + " " + self.tag_name + " " + self.skateboarder_name + " " + self.category_name + " " + self.editor_name
    #probably could have used "join" there...
    s = "*" + string.gsub(" ", "* OR *") + "*"
    relates = Video.find_with_ferret(s)
    #takes out duplicates and gices 10 to choose from
    while relates.count <= 10
        relates << Video.random
        relates = relates.uniq
    end
    #take out original video
    relates = relates - [Video.find(self.id)]
    #send back with "middle data"... for some reason i thought this might be more accurate....
    return relates[1..8]
end