我目前正在编写一个应用程序,它从 twitter 中提取所有带有链接的推文,并将它们放入我们的可搜索数据库中。
我们的数据库表如下所示:
推文 内容 推文ID 链接 网址 标题 数数 用户 用户名 用户图像
我们希望能够在 tweet.content 列中搜索搜索词,并将结果按 link.count 排序
建立模型关联以实现此目的的最佳方法是什么?执行搜索的最佳方式是什么?我研究了acts_as_ferret,但我不知道如何对结果进行排序。
谢谢,丹尼尔·埃里克森
我目前正在编写一个应用程序,它从 twitter 中提取所有带有链接的推文,并将它们放入我们的可搜索数据库中。
我们的数据库表如下所示:
推文 内容 推文ID 链接 网址 标题 数数 用户 用户名 用户图像
我们希望能够在 tweet.content 列中搜索搜索词,并将结果按 link.count 排序
建立模型关联以实现此目的的最佳方法是什么?执行搜索的最佳方式是什么?我研究了acts_as_ferret,但我不知道如何对结果进行排序。
谢谢,丹尼尔·埃里克森
也许是这样的
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 了解更多信息。