如何使用solr索引和查询索引时不可用的数据

时间:2012-10-19 11:53:52

标签: java solr

在我的一个应用程序中,我们需要索引大量数据(30GB)。我们正在使用SOLR来索引这些数据。我们的schema.xml中有50个字段。我正在索引来自不同数据库的数据。

但在编制索引时,所有字段数据都不可用。因此,我们创建了多个内核并分别为每个内核编制索引。

Ex: - 使用Core 0,我们使用单独的查询索引5个字段

从双重选择Field1,Field2,Field3,Field4,Field5。

Field1 ---跨核心的公共字段 Field2 ---在该核心中索引的字段 Field3 - 在此核心中编入索引的字段 Field4 - 在此核心中编入索引的字段 Field5 - 在此核心中编入索引的字段

因此,除了上述5个字段之外,core0中的所有字段都将为null。

核心1的下一步

Core 1我们使用单独的查询索引3个字段

从双重选择Field1,Field6,Field6。

Field1 ---跨核心的公共字段 Field6 ---在该核心中编入索引的字段 Field7 - 在此核心中编入索引的字段

我们正在为所有核心使用通用的schema.xml。

对于查询,我们编写了一个自定义请求处理程序,它分别查询每个核心,然后合并结果。此外,每个核心中的数据将每3小时刷新一次。我在solr4.0中尝试过部分更新功能,但索引也需要很长时间......不太有用

他们有更好的方法/设计处理这个问题吗?

谢谢, 拉维

1 个答案:

答案 0 :(得分:0)

您可以使用shards跨多个核心进行查询。您可以从任何代码执行此操作。

e.g;

solr/core1/select/?q=iPad&shards=localhost:8983/solr/core1,localhost:8983/solr/core0

您可以在shards中使用“,”传递任意数量的内核。