Я использую Solrj.
Первое создание ядер. Я нашел 2 способа.
первый путь:
SolrCore solrCore = coreContainer.create(new CoreDescriptor(
coreContainer,
coreName,
"."));
coreContainer.register(solrCore, true);
второй способ:
SolrQuery solrQuery = new SolrQuery();
solrQuery.setParam(CommonParams.QT, "/admin/cores");
solrQuery.setParam(
CoreAdminParams.ACTION,
CoreAdminParams.CoreAdminAction.CREATE.name());
solrQuery.setParam(
CoreAdminParams.NAME,
name);
solrQuery.setParam(
CoreAdminParams.INSTANCE_DIR,
"./" + name);
solrQuery.setParam(
CoreAdminParams.CONFIG,
solrHomeRelativePath + solrConfigHomeRelativePath);
solrQuery.setParam(
CoreAdminParams.SCHEMA,
solrHomeRelativePath + solrSchemaHomeRelativePath);
solrQuery.setParam(
CoreAdminParams.DATA_DIR,
".");
solrServer.query(solrQuery);
для запроса конкретного ядра, я просто делаю:
SolrServer solrServer = new EmbeddedSolrServer(coreContainer, coreName);
, а затем выполняйте мои запросы, как обычно, используя solrj.
Таким образом, в вашем случае вы просто получите имя ядра, связанное с пользователем, выполняющим поисковый запрос. Экземпляр coreContainer будет общим, но не экземпляр SolrServer.
Кстати, я делаю что-то похожее на тебя!
Увидимся.