Solr: Получить имена полей из индекса Solr? - PullRequest
21 голосов
/ 09 июля 2010

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

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

category_0_s
category_1_s
...

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

Есть идеи? Спасибо

Ответы [ 3 ]

32 голосов
/ 09 апреля 2015

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

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

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

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

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

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

21 голосов
/ 09 июля 2010

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

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

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

1 голос
/ 08 августа 2014

Если вам нужно сделать это из вашего 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    
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...