0

我是 Solr/Sunspot 的新手,我确定我做错了什么。

我有sunspot_rails1.2.1 与rails2.3.4 一起使用(尝试了其他版本,但它们不起作用,我们希望现在不要升级 rails)

重新索引有效,我得到了结果,但搜索时间太长了。大约 25 秒对两个字段进行全文搜索,其中包含将近 78,000 个文档。

我有这个:

class Abstract < ActiveRecord::Base
  searchable do
    text :original_title, :headline
  end
end

像这样搜索:

Abstract.search do
  fulltext 'test'
  paginate :page => 1, :per_page => 30
end

这是我必须继续的唯一线索:

Solr Select (25275.2ms) {:fq=>["type:Abstract"], :start=>0, :defType=>"dismax", :q=>" +(test)", :fl=>"* score", :rows=>30, :qf=>"original_title_text header_text"}

这不仅仅是一次性的第一次搜索,每次都是这样。

如果我添加更多标准(例如两个日期之间的 updated_at ),它会增加到大约 8 分钟!

我被要求注意这是在开发环境中。

更新

问题不在于 Solr。如果我访问这个:

http://localhost:8982/so​​lr/select?indent=on&version=2.2&q=+%2B(test)&fq=type:Abstract&defType=dismax&start=0&rows=10&fl= *%2Cscore&qt=standard&wt=standard&explainOther=&hl.fl=&qf =original_title_text+headline_text

它执行相同的查询并花费极少的时间(大约 4 毫秒!)

那么为什么通过 Rails 查询要花这么长时间呢?它要么是太阳黑子,要么是 rsolr,或者正如约翰建议的那样,也许它正在启动一个新的 Solr 实例,但我认为不是这样。

我应该尝试切换到acts_as_solr 吗?我觉得现在有点过时了。

我在 sunspot 1.2.1 和 rsolr 0.12.1 上——更新的版本在这里有帮助吗?

有趣的新信息

升级到 Rails 2.3.14 将查询时间减少到 18 秒!

结果!

我现在已经用 RSolr 1.0.6 尝试了 sunspot 1.3.0,最后我得到了我正在寻找的快速响应!这需要我迁移到 Rails 2.3 的稳定版本。不好意思,我们不想升级 rails 版本,但似乎有必要。

4

1 回答 1

1

Brightbox,我们在 Solr 的一个特定集群中存储了大约 3600 万个文档。我们使用 Ruby 存储和搜索文档(尽管不使用 sunspot)。我们将文档与索引一起存储在磁盘上,大约需要 36gig。

重新启动 solr 后的第一次搜索可能需要一分钟或更长时间,但随后的搜索(即使是非常不同的搜索)通常需要不到半秒的时间(即使搜索返回数百万个文档并按另一个字段值排序)。

我们已将最大内存堆站点提高到 1gig (-Xmx1024m),它通常几乎立即增长到它,但 10 相当稳定。我们确实为我们的数据仔细调整了架构,但没有什么特别的。

您的设置显然存在严重问题,因为每次只有 78k 个文档需要这么长时间。

如果没有更多关于正在发生的事情的详细信息,我建议:首先,提高你的最大内存堆设置 - 如果你的设置太低,那么它每次都会从磁盘读取索引,并且可能会触发垃圾收集器经常(它使用大量的 CPU)。

其次,确保太阳黑子没有做一些奇怪的事情,比如在每次搜索时都启动一个新的 solr 实例。应该有一个 solr 守护进程一直在运行。

第三,如果您仍然有问题,请尝试使用 curl 或其他方式直接调用 solr。尝试一点一点地简化查询,看看它的某个特定部分是否是问题(可能会丢失除 defType 和 qf 之外的所有内容,然后从那里重新添加)。

于 2011-11-28T17:55:55.277 回答