小编pth*_*amm的帖子

Sunspot Solr核心初始化失败

当我运行测试时,大多数测试都失败,并显示以下错误。

Failure/Error: let(:user){ FactoryGirl.create(:user) }
   RSolr::Error::Http:
     RSolr::Error::Http - 500 Internal Server Error
     Error:     {msg=SolrCore 'test' is not available due to init failure: Error opening new searcher,trace=org.apache.solr.common.SolrException: SolrCore 'test' is not available due to init failure: Error opening new searcher
        at org.apache.solr.core.CoreContainer.getCore(CoreContainer.java:745)
        at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:299)
        at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:207)
        at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1419)
        at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:455)
        at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137)
        at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:557)
        at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231)
        at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1075)
        at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:384)

     URI: http://localhost:8981/solr/test/update?wt=ruby
     Request Headers: {"Content-Type"=>"text/xml"}
     Request Data: "<?xml version=\"1.0\" encoding=\"UTF-8\"?><add><doc><field name=\"id\">User 13497</field><field name=\"type\">User</field><field name=\"type\">ActiveRecord::Base</field><field name=\"class_name\">User</field><field name=\"phone_number_text\">+11111111200</field><field name=\"name_text\">111.111.1200</field></doc></add>"
Run Code Online (Sandbox Code Playgroud)

开发工作正常。我认为这可能是一个损坏的测试索引,所以:

$ rm -rf …
Run Code Online (Sandbox Code Playgroud)

lucene solr ruby-on-rails sunspot sunspot-rails

5
推荐指数
0
解决办法
1533
查看次数

Rails:通过has_many关联的最后一个元素对模型进行排序

我有两个模式:UserMessage由一个连接has_many关系.我想得到一个users按其最后一条消息的时间戳排序的列表.

class User < ActiveRecord::Base
  has_many :messages
end
class Message < ActiveRecord::Base
  belongs_to :user
end
Run Code Online (Sandbox Code Playgroud)

当我这样做:

@users = User.includes(:messages).order('messages.created_at DESC').limit(5)
Run Code Online (Sandbox Code Playgroud)

它似乎订购消息,获取最新的5条消息,然后返回与这些消息相关联的用户.所以用户数量可以少于5.我想确保我得到5个用户.

我希望查询得到的最新消息,对于每个请求,下令最后的消息,然后用最新的消息回报用户.所以我想要这样的东西:

@users = User.includes(:messages).order( <messages.last.created_at DESC> )
Run Code Online (Sandbox Code Playgroud)

理想情况下,解决方案将对数据库进行排序,因为我想使用paginate.如果它是相关的我正在使用Postgres.

ruby activerecord join ruby-on-rails rails-activerecord

4
推荐指数
1
解决办法
2055
查看次数