2012-03-13 42 views
0

我正在使用solrj进行分布式搜索。基于某些用户偏好,我将不得不搜索一组特定的索引。有没有什么办法可以通过编程方式(指定!)指定该特定搜索查询的数据目标?指向solrj中的不同数据目录?

我做了snoop的文档,但无法找到除了在不同的核心数据集,有没有更好的办法吗?

编辑1:所有索引集都具有相同的模式格式。

回答

2

您可以使用CREATE CoreAdmin action几乎动态地更改dataDir,并指定dataDir参数。

根据预先存在的 instanceDir/solrconfig.xml/schema.xml创建一个新内核,并注册它。如果启用了 持久性(persist = true),则此新的 核心的配置将保存在'solr.xml'中。如果存在同名的核心,则在“新”创建的核心正在初始化时,“旧”核心将继续接受请求 。一旦完成,所有新请求 将转到“新”核心,并且“旧”核心将被卸载。

无论如何,你需要加载一个新的核心,不可能不改变数据目录。

您可以使用solrj使用CoreAdminRequestCoreAdminResponse类调​​用CoreAdmin操作。

+0

与在单独的核心权利@javanna中处理它几乎相同? – Greenhorn 2012-03-13 09:11:33

+0

@greenhorn是的,它是相似的,但有了这个解决方案,你将只有一个核心运行,并且你将改变它的'dataDir'。 – javanna 2012-03-13 09:55:46

+0

是啊!我只是在做一些研究,如果事情有所改变,我们会在这里更新。 – Greenhorn 2012-03-13 10:07:53