Ответ 1
Используйте обработчик luke:
http://solr:8983/solr/admin/luke?numTerms=0
Используйте xpath, чтобы получить все поле с тегом dynamicBase, которое соответствует определению динамических полей, которое вы ищете.
Как я могу запросить экземпляр solr для всех (или префиксных) имен полей?
Я хочу использовать динамические поля, например
category_0_s
category_1_s
...
но я не знаю, сколько может существовать. Поэтому я хочу получить все поля (желательно с префиксом "категория _" ).
Любые идеи? Благодаря
Используйте обработчик luke:
http://solr:8983/solr/admin/luke?numTerms=0
Используйте xpath, чтобы получить все поле с тегом dynamicBase, которое соответствует определению динамических полей, которое вы ищете.
Этот запрос вернет список разделенных запятыми всех используемых полей, включая динамические.
select?q=*:*&wt=csv&rows=0&facet
Чтобы ответить на исходный вопрос, вот как получить список всех полей, начинающихся с категории _
select?q=*:*&wt=csv&rows=0&facet&fl=category_*
Наличие параметра facet
необходимо, чтобы этот запрос работал над более новыми версиями Solr. В старых версиях он будет работать без него.
В старых версиях подстановочный знак в параметре fl
не работает.
Если вам нужно сделать это из своего приложения 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
}