Есть ли у Solr API для чтения schema.xml?

Есть ли какой-нибудь Solr API для чтения Solr schema.xml?

Причина, по которой мне это нужно, заключается в том, что фасетирование Solr не имеет обратной совместимости. Если индекс не определяет поле A, но программа пытается сгенерировать фасеты для поля A, все фасеты завершатся ошибкой. Поэтому мне нужно проверить во время выполнения, какие поля у нас есть в индексе, и динамически сгенерировать фасеты.


person Qing Zhang    schedule 30.08.2011    source источник


Ответы (4)


Вы можете получить схему с помощью http://localhost:8983/solr/admin/file/?contentType=text/xml;charset=utf-8&file=schema.xml

Это необработанный xml, поэтому нужно его проанализировать, чтобы получить нужную информацию.

Однако, если ваша программа создает недопустимый фасет, возможно, вам следует просто исправить программу, а не пытаться обойти это.

person Mauricio Scheffer    schedule 30.08.2011
comment
Dose solr есть api для чтения? Я заметил, что доступен api для чтения solrconf.xml. Однако я не могу найти тот, который для schema.xml - person Qing Zhang; 30.08.2011
comment
@Qing Zhang: какая у вас клиентская платформа? - person Mauricio Scheffer; 31.08.2011
comment
Как читать solrconf.xml через api, любую ссылку на doc? Я пытался найти, но не нашел. - person Krunal; 06.11.2015

Начиная с Solr 4.2, Schema REST API позволяет получить схему с помощью:

http://localhost:8983/solr/schema

или с основным именем:

http://localhost:8983/solr/mycorename/schema

Начиная с Solr 4.4, вы также можете изменять свою схему.

подробнее на странице Solr Wiki

person Edna    schedule 18.09.2013

Одна альтернатива - использовать LukeRequestHandler. Он создан по образцу инструмента Luke, который используется для диагностики содержимого Lucene Index. Запрос / admin / luke? Show = schema покажет вам схему. Однако вам нужно будет определить его в solrconfig.xml следующим образом:

<requestHandler name="/admin/luke" class="org.apache.solr.handler.admin.LukeRequestHandler" />

Документация по LukeRequestHandler, ссылка

person sushant    schedule 30.08.2011

На самом деле для этого у вас есть Schema API. API схемы Solr позволяет использовать REST API для получения информации о schema.xml.

В Solr 4.2 и 4.3 он разрешает только доступ GET (только для чтения), но в Solr 4.4 в схему могут быть добавлены новые поля и директивы copyField. В будущих выпусках Solr эта функциональность будет расширена, чтобы можно было обновлять больше элементов схемы.

Точки входа в API

/collection/schema: retrieve the entire schema
/collection/schema/fields: retrieve information about all defined fields, or create new     fields with optional copyField directives
/collection/schema/fields/name: retrieve information about a named field, or create a new named field with optional copyField directives
/collection/schema/dynamicfields: retrieve information about dynamic field rules
/collection/schema/dynamicfields/name: retrieve information about a named dynamic rule
/collection/schema/fieldtypes: retrieve information about field types
/collection/schema/fieldtypes/name: retrieve information about a named field type
/collection/schema/copyfields: retrieve information about copy fields, or create new copyField directives
/collection/schema/name: retrieve the schema name
/collection/schema/version: retrieve the schema version
/collection/schema/uniquekey: retrieve the defined uniqueKey
/collection/schema/similarity: retrieve the global similarity definition
/collection/schema/solrqueryparser/defaultoperator: retrieve the default operator

Примеры

Входные данные Получить список всех полей.

curl http://localhost:8983/solr/collection1/schema/fields?wt=json

Входные данные Получить всю схему в формате JSON.

curl http://localhost:8983/solr/collection1/schema?wt=json

Дополнительная информация здесь: apache-solr -ref-guide-4.5.pdf (поиск Schema API)

person delkant    schedule 29.10.2013