Подтвердить что ты не робот

Solr: Получить имена полей из индекса solr?

Как я могу запросить экземпляр solr для всех (или префиксных) имен полей?

Я хочу использовать динамические поля, например

category_0_s
category_1_s
...

но я не знаю, сколько может существовать. Поэтому я хочу получить все поля (желательно с префиксом "категория _" ).

Любые идеи? Благодаря

4b9b3361

Ответ 1

Используйте обработчик luke:

http://solr:8983/solr/admin/luke?numTerms=0

Используйте xpath, чтобы получить все поле с тегом dynamicBase, которое соответствует определению динамических полей, которое вы ищете.

Ответ 2

Этот запрос вернет список разделенных запятыми всех используемых полей, включая динамические.

select?q=*:*&wt=csv&rows=0&facet

Чтобы ответить на исходный вопрос, вот как получить список всех полей, начинающихся с категории _

select?q=*:*&wt=csv&rows=0&facet&fl=category_*

Наличие параметра facet необходимо, чтобы этот запрос работал над более новыми версиями Solr. В старых версиях он будет работать без него.

В старых версиях подстановочный знак в параметре fl не работает.

Ответ 3

Если вам нужно сделать это из своего приложения Java, вы можете использовать Solrj и LukeRequestRequestHandler.

Ваш код будет выглядеть следующим образом.

LukeRequest lukeRequest = new LukeRequest();
lukeRequest.setNumTerms(0);

LukeResponse lukeResponse = lukeRequest.process(server);

Map<String, FieldInfo> fieldInfoMap = lukeResponse.getFieldInfo();

for (Entry<String, FieldInfo> entry : fieldInfoMap.entrySet()) {

    String fieldName = entry.getKey();
    FieldInfo fieldInfo = entry.getValue();

    // process fieldInfo    
}