Поддержка перечисления в файле схемы Yokozuna solr
В нашем файле схемы solr мы определяем типы полей enum и указываем внешний файл enums.xml в параметре enumConfig.
Однако мы должны вручную скопировать этот файл в каталог /conf поискового индекса, который мы создаем или обновляем.
Есть ли способ сделать это программно с помощью Java-клиента riak? Классы индекса Yokozuna в API, похоже, не поддерживают загрузку внешних файлов, поэтому он жалуется, что не может найти файл enums.xml в пути. Мы хотим иметь возможность обновлять схему программно и указывать на файл enums.xml, чтобы мы могли обновлять индекс поиска без необходимости вручную копировать файл enums.xml в каталог /conf.
2 ответа
В настоящее время в API нет функциональности, доступной через Java-клиент, который позволял бы загружать внешний файл, например enums.xml. На данный момент вам придется вручную скопировать файл на каждый узел в вашем кластере.
Это создаст схему (и ее XML-файл) в вашем кластере Riak:
import com.basho.riak.client.api.RiakClient;
import com.basho.riak.client.api.commands.search.*;
import com.basho.riak.client.core.query.search.YokozunaIndex;
import com.basho.riak.client.core.query.search.YokozunaSchema;
String schemaName = "enum";
RiakClient client = RiakClient.newClient("127.0.0.1");
String schemaStr = ...; // read from local enum.xml
YokozunaSchema schemaObj = new YokozunaSchema(schemaName, schemaStr);
StoreSchema storeSchema = new StoreSchema.Builder(schemaObj).build();
client.execute(storeSchema);
Затем вы можете создать индекс на основе этой схемы:
String indexName = "enum_idx";
YokozunaIndex indexObj = new YokozunaIndex(indexName, schemaName);
StoreIndex storeIndex = new StoreIndex.Builder(indexObj).build();
client.execute(storeIndex);
Riak клиент для Java 2.x