Поддержка перечисления в файле схемы 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

Другие вопросы по тегам