对两个Rails应用程序使用一个Solr实例

时间:2015-02-25 14:46:27

标签: ruby-on-rails solr sunspot

我有一个服务器设置了几个Rails应用程序,其中两个使用Solr太阳黑子。但是,Solr正在为给定的搜索返回不相关的结果,我相信问题归结为没有将Solr / Sunspot分离来处理两个Rails应用程序。

我在一个应用程序中有这个:

class Article < ActiveRecord::Base
  searchable do
    text :title, :boost => 2.0
    text :body do
      strip_tags body
    end
    time :created_at
  end
end

和另一个:

class Article < ActiveRecord::Base
  searchable do
    text :title, :body
  end
end

我的sunspot.yml文件基本相同:

production:
  solr:
    hostname: localhost
    port: 8983
    log_level: WARNING
    path: /solr/default
    solr_home: solr

development:
  solr:
    hostname: localhost
    port: 8982
    log_level: INFO
    path: /solr/development

test:
  solr:
    hostname: localhost
    port: 8981
    log_level: WARNING
    path: /solr/test

我的两个应用程序的solr.xml都是:

<?xml version="1.0" encoding="UTF-8" ?>
<solr persistent="false">
  <cores adminPath="/admin/cores" host="${host:}" hostPort="${jetty.port:}">
    <core name="default"     instanceDir="." dataDir="default/data"/>
    <core name="development" instanceDir="." dataDir="development/data"/>
    <core name="test"        instanceDir="." dataDir="test/data"/>
  </cores>
</solr>

有没有办法获得1个Solr实例索引并为2个Rails应用程序提供结果?

我没有找到很多关于这方面的文档,所以对于如何做到这一点感到有些困惑。

非常感谢任何帮助。谢谢!

1 个答案:

答案 0 :(得分:1)

我相信您正在寻找的是多核设置。默认情况下,这是太阳黑子现在运行的方式,除了核心用于不同的rails环境。有关此更改,请参阅https://github.com/sunspot/sunspot/issues/115。在该模板之后,我认为您需要找到一个位置来保存配置文件和数据目录,然后更新它们以列出它将运行的所有核心。 http://eemglobal.com/2014/07/setup-rails-4-with-sunspot-gem-and-solr-4-7-in-production-environment-on-ubuntu-14/上的这篇文章显示了另一种方法,您可以使用solr管理界面添加核心,然后更新配置文件以匹配。