0

我目前正在编写一个应用程序,它从 twitter 中提取所有带有链接的推文,并将它们放入我们的可搜索数据库中。

我们的数据库表如下所示:

推文
  内容
  推文ID

链接
  网址
  标题
  数数

用户
  用户名
  用户图像

我们希望能够在 tweet.content 列中搜索搜索词,并将结果按 link.count 排序

建立模型关联以实现此目的的最佳方法是什么?执行搜索的最佳方式是什么?我研究了acts_as_ferret,但我不知道如何对结果进行排序。

谢谢,丹尼尔·埃里克森

4

1 回答 1

0

也许是这样的

class Tweets < ActiveRecord::Base
  named_scope :order_by_number_of_links,
    :joins => "LEFT OUTER JOIN links ON(tweets.id = links.tweet_id)"
    :group => "tweets.id"
    :order => "count(links.id) DESC"
end

这尚未经过测试,但希望你现在可以做到

Tweets.all(
  :conditions => ["content LIKE ?", params[:query]]
).order_by_number_of_links

一种更好(更快)的方法是实现 counter_cache。Rails 允许您在 tweets 表中进行计数,该表反映了它有多少 X 类型的关联对象。所以,你添加一个links_count 到你的推文表 Rails 应该让那个计数器更新推文有多少链接。这将使查询更容易和更快。看看这个Railcast 了解更多信息。

于 2009-07-11T07:25:23.303 回答