【问题标题】:How to handle related objects by attribute?如何按属性处理相关对象?
【发布时间】:2011-02-27 20:39:53
【问题描述】:

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

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

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

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

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

【问题讨论】:

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


    【解决方案1】:

    那么,您正在寻找一个搜索词来定位您的视频吗?我不太确定这个问题,但如果是这样,这对你有用吗?

    site:example.com inurl:videos
    

    【讨论】:

    • 我基本上是在尝试根据许多属性找到处理“相关视频”的最佳方法,我想也许可以利用 Google 的“相关”搜索功能......
    【解决方案2】:

    通过使用 ferret 进行关键字爆炸搜索解决了这个问题。

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-20
      • 2020-03-09
      • 1970-01-01
      • 1970-01-01
      • 2014-01-30
      • 2019-04-02
      相关资源
      最近更新 更多