2010-07-09 6 views
18

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

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

category_0_s 
category_1_s 
... 

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

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

ответ

20

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

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

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

+1

ДА! Вот и все. Спасибо. – floplus

+0

@Philippe Это не получит имена всех используемых динамических полей, что и требовал первоначальный плакат. Внимательно прочитайте вопрос и ответьте. – GoalBased

+0

@GoalBased Хорошо, но если вместо критики вы дали лучшее решение, это тоже помогло бы. Поэтому, чтобы обновить мой «ответ», правильным вызовом для динамических полей является http: // host: /solr/collection/schema/dynamicfields. Дополнительные сведения см. На странице https://cwiki.apache.org/confluence/display/solr/Schema+API – Philippe

1

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

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

+0

Откуда возникает фасет? – tar

+0

Извините, это была опечатка. Исправлен код для эффективной итерации через записи хэшмапа. Надеюсь это поможет. – cjungel

25

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

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

Чтобы ответить на исходный вопрос, это как получить список всех полей, начиная с category_

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

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

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

+2

В Solr5, включая как 'facet', так и' facet.field', возникает 400 Bad Request, но по-прежнему включают в себя поля. Оставляя 'facet.field' возвращает поля и 200 Успех – Izkata

+0

@Izkata Спасибо за улучшение! Я обновил свой ответ. Любопытно, что установка 'facet = true' не работает, но' facet' не работает. – GoalBased

+0

На Solr 6.3 только fl = id, category ... работал без грани = on. Мне интересно, нужно ли мне еще что-то добавлять в схеме, чтобы показать дополнительную информацию – gadelkareem

Смежные вопросы