生产中的Solr全文搜索 - 这是更好的太阳黑子:solr捆绑解决方案或独立tomcat + solr?

时间:2012-12-12 13:39:21

标签: ruby-on-rails tomcat solr full-text-search sunspot-solr

我们正在开发模式中使用太阳黑子的Solr gem一段时间。现在需要将应用程序移至生产环境。

使用捆绑的太阳黑子宝石在生产环境中设置solr是否有任何缺点?

我一般都喜欢tomcat + solr的想法,但设置起来比较复杂。

太阳黑子捆绑的宝石很容易。如果我们有3个阶段的1个rails项目(分段,生产,QA),2个app服务器和1个db / solr服务器,则必须

  1. 将rails项目推送到数据库服务器
  2. 在生产环境中使用bundle exec rake sunspot在db服务器上启动solr:solr:start for(我们只为每个solr实例使用不同的端口)
  3. 使用rake sunspot重新索引:solr:reindex
  4. 修改应用服务器的sunspot.yml,使其连接到特定舞台端口上的数据库服务器
  5. 以上适用于生产/登台solrs的X实例。

    Tomcat6 +太阳黑子不是那么容易,时间/结果有效。据我所知(修理我),我必须:

    1. 在数据库服务器上安装和维护tomcat
    2. 假设我们想拥有3个solr实例 - 使用单独的solrs部署3个solr war(或者使用很难设置的多核solr)
    3. 将rails项目部署到数据库服务器
    4. 每当我们更改架构/配置/在rails中的任何内容时 - 我们必须处理生成solr xmls和confs并将其复制到tomcat webapps
    5. 修改solr conf / xml中的目录,使其指向索引文件等。
    6. 在每个rails上重新加载tomcat solr应用程序实例,部署包括一些脚本和部署过程的“非rails”方法:)

1 个答案:

答案 0 :(得分:3)

我最近做了类似的事,不得不回答同样的问题。我的问题空间看起来像有两种语言(最好是两个核心,将来可能更多用于其他搜索选项),必须将数据索引到多个表和搜索/计数方面,部分在分层结构中,如产品组和层次标记,如car_brand /型号/类型/ build_year。

据我所知,如果您拥有相对“平坦”的数据,太阳黑子的效果最好(仅限),最好只需要为单个模型定义要使用的字段。当您需要将多个模型组合到一个文档中进行构面时,就很难了。 (但由于我没有使用太阳黑子,我无法确切地说出来)。您可以(并且应该)仍然使用rsolr gem与Solr进行通信。但是如果你在开发中使用太阳黑子,那么无论如何它最有可能为你工作。

有关tomcat事物的详细信息:

  1. 在数据库服务器上安装和维护tomcat
  2. 是的,有些工作但可以处理

    1. 假设我们想拥有3个solr实例 - 使用单独的solrs部署3个solr war(或者使用很难设置的多核solr)
    2. 我使用了多核心。设置起来并不困难。无论如何,你最好还是学习一下Solr配置。多核的最大部分只有两个子目录,其中包含基本相同的XML配置文件集。

      1. 将rails项目部署到数据库服务器
      2. 无论如何,

        必须这样做:)

        1. 每当我们更改架构/配置/在rails中的任何内容时 - 我们必须处理生成solr xmls和confs并将其复制到tomcat webapps
        2. 是的,写一些脚本。或者你可以有一个包含tomcat / solr文件夹和Rails项目文件夹或符号链接这些文件夹的git repo。我还没有找到一个好的解决方案,不得不偶尔复制一些东西。

          1. 修改solr conf / xml中的目录,使其指向索引文件等。
          2. 是的,一些符号链接可以帮助保持简单

            1. 在每个rails上重新加载tomcat solr应用程序实例,部署包括一些脚本和部署过程的“非rails”方法:)
            2. 仅当部署实际更改与您的搜索相关的任何内容时。有一些脚本。 Rails部署解决方案可以提供帮助,但由于我不介意手动执行一些操作,因此我无需安装。

              总而言之,我认为我对Solr的配置有更多的控制和洞察力,并且可以更好地使用其中一些更复杂的功能,例如具有层次结构的方面。事实上,Solr起初可能看起来有点复杂,但经过一段时间后你会进入它,然后它就变成了一个很棒的工具。