在我的一个应用程序中,我们需要索引大量数据(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中尝试过部分更新功能,但索引也需要很长时间......不太有用
他们有更好的方法/设计处理这个问题吗?
谢谢, 拉维
答案 0 :(得分:0)
您可以使用shards
跨多个核心进行查询。您可以从任何代码执行此操作。
e.g;
solr/core1/select/?q=iPad&shards=localhost:8983/solr/core1,localhost:8983/solr/core0
您可以在shards
中使用“,”传递任意数量的内核。