solr是否有API来读取solr schema.xml?

时间:2011-08-30 17:22:46

标签: solr facet

有没有solr api来读取solr schema.xml?我需要它的原因是solr facet不向后兼容。如果索引没有定义字段A,但程序试图为字段A生成构面,则所有构面都将失败。因此,我需要在运行时中检查索引中的索引字段,并动态生成构面。

4 个答案:

答案 0 :(得分:3)

您可以使用http://localhost:8983/solr/admin/file/?contentType=text/xml;charset=utf-8&file=schema.xml

获取架构

它是原始xml,因此必须解析它以获取所需的信息。

但是,如果你的程序生成了无效的方面,也许你应该修复程序而不是试图解决这个问题。

答案 1 :(得分:3)

另一种方法是使用LukeRequestHandler。它以Luke工具为模型,用于诊断Lucene索引的内容。 query / admin / luke?show = schema,将显示模式。但是,您需要在solrconfig.xml中定义它,如下所示:

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

LukeRequestHandler link

的文档

答案 2 :(得分:3)

从Solr 4.2开始,Schema REST API允许您通过以下方式获取模式:

http://localhost:8983/solr/schema

或核心名称:

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

自Solr 4.4起,您也可以修改架构。

more details on the Solr Wiki page

答案 3 :(得分:2)

实际上你有Schema API。 Solr架构API允许使用REST API获取有关schema.xml的信息

在Solr 4.2和4.3中,它只允许GET(只读)访问,但是在 可以将Solr 4.4,新字段和copyField指令添加到模式中。 Future 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

更多信息here: apache-solr-ref-guide-4.5.pdf(搜索架构API)