我正在使用solrj进行分布式搜索。根据某些用户偏好,我将不得不搜索一组特定的索引。有什么方法可以通过编程方式(duh!)指定特定搜索查询的数据对象吗?
我确实窥探了文档,但除了将数据集放在不同的核心之外无法找到,还有更好的方法吗?
编辑1:所有索引集具有相同的架构格式。
答案 0 :(得分:2)
您可以使用CREATE CoreAdmin action几乎动态更改dataDir
,并指定dataDir
参数。
根据预先存在创建新核心 instanceDir / solrconfig.xml / schema.xml,并注册它。如果 启用持久性(persist = true),这个新配置 核心将保存在'solr.xml'中。如果存在具有相同名称的核心, 而“新”创造的核心是初始化,而“旧”的核心将是 继续接受请求。一旦完成,所有新请求 将进入“新”核心,“旧”核心将被卸载。
无论如何,你需要加载一个新核心,如果不这样做就不可能更改数据目录。
您可以使用solrj使用CoreAdminRequest
和CoreAdminResponse
类调用CoreAdmin操作。