如何使用现有数据创建solr核心?

时间:2010-03-23 18:03:58

标签: solr

Solr 1.4企业级搜索服务器建议对核心副本执行大量更新,然后将其交换为主核心。我遵循以下步骤:

  1. 创建准备核心:http://localhost:8983/solr/admin/cores?action=CREATE&name=prep&instanceDir=main
  2. 执行索引更新,然后在准备核心上提交/优化。
  3. 交换主核心和准备核心:http://localhost:8983/solr/admin/cores?action=SWAP&core=main&other=prep
  4. 卸载预备核心:http://localhost:8983/solr/admin/cores?action=UNLOAD&core=prep
  5. 我遇到的问题是,在步骤1中创建的核心中没有任何数据。如果我要对所有东西和厨房水槽做一个完整的索引,那就没问题了,但如果我只想更新一个(大)文件的子集 - 这显然不会起作用。

    (我可以合并核心,但我正在尝试做的部分是删除任何已删除的文档而不尝试列出它们。)

    我缺少CREATE操作的标志吗? Solr Wiki page for CoreAdmin在细节上有点稀疏。

    可能的解决方案:复制

    solr-user上有人建议使用复制。在这种情况下使用它(据我的理解)需要以下步骤:

    1. 根据MAIN核心的配置
    2. 创建一个新的PREP核心
    3. 将MAIN核心的配置更改为主
    4. 将PREP核心的配置更改为从属
    5. 原因/等待同步?
    6. 将PREP核心的配置更改为不再是从属
    7. 执行索引更新,然后在PREP核心上提交/优化。
    8. 交换PREP和MAIN核心
    9. 更简单的基于复制的设置是配置永远是主设备的永久PREP核心。 MAIN核心(根据需要在尽可能多的服务器上)可以成为PREP核心的从属。可以根据需要快速或慢速地在PREP核心上进行索引。

      可能的解决方案:永久PREP核心和双重更新

      我想出的另一个想法是这个(也涉及永久的PREP核心):

      1. 执行索引更新,然后在PREP核心上提交/优化。
      2. 交换PREP和MAIN核心。
      3. 重新执行索引更新,然后提交/优化现在的PREP核心。它现在具有与MAIN核心相同的数据(理论上)并且将会存在,为下一个索引操作做好准备。

1 个答案:

答案 0 :(得分:3)

我创建了克隆操作的想法,它执行索引和配置数据的文件系统副本,然后创建一个新的。存在一些锁定问题,您必须具有对索引的文件系统访问权限,但它确实有效。这确实给你一个很好的副本,你可以使用配置文件。

我想的越多,你就可以创建一个新的核心,然后这样做:

从主命令:http://slave_host:port/solr/replication?command=fetchindex强制从属设备上获取fetchindex 可以传递额外的属性'masterUrl'或其他属性,如'compression'(或标记中指定的任何其他参数),以便从主服务器进行一次性复制。这样就不需要对从机中的主机进行硬编码。

然后从生产中填充新的,然后应用您的更新,然后交换回来!