我试图使用我自己的schema.xml运行Solr核心,但Solr(版本5.2.1)一直抱怨缺少我的字段定义中甚至不存在的fieldType元素.
org.apache.solr.common.SolrException: fieldType 'booleans' not found in the schema
每当我添加一个’missing’字段类型时,会弹出另一个错误,抱怨另一个fieldType缺失,比如longs等,直到我将它们全部添加并且接受模式而没有错误.
现在为什么我必须提供这些fieldtype元素,当它们没用时?
在config.xml中我有:
<schemaFactory class="ClassicIndexSchemaFactory"/>
这是我的schema.xml:
<schema name="collections" version="1.5"> <fields> <field name="id_object" type="string" indexed="true" stored="true" /> <field name="id_organization" type="string" indexed="true" stored="true" /> <field name="title" type="string" indexed="true" stored="true" /> <field name="artist" type="string" indexed="true" stored="true" /> <field name="searchname" type="string" indexed="true" stored="true" /> <field name="technique_group" type="string" indexed="true" stored="true" /> <field name="technique" type="string" indexed="true" stored="true" /> <field name="color_type" type="string" indexed="true" stored="true" /> <field name="color" type="string" indexed="true" stored="true" /> <field name="subject" type="string" indexed="true" stored="true" /> <field name="height" type="tint" indexed="true" stored="true" /> <field name="width" type="tint" indexed="true" stored="true" /> <field name="depth" type="tint" indexed="true" stored="true" /> <field name="price_sale" type="tfloat" indexed="true" stored="true" /> <field name="price_rental" type="tfloat" indexed="true" stored="true" /> <field name="price_rental_with_savings" type="tfloat" indexed="true" stored="true" /> <field name="savings_portion" type="tfloat" indexed="true" stored="true" /> <field name="year" type="tint" indexed="true" stored="true" /> <field name="is_for_rent" type="boolean" indexed="true" stored="true" /> <field name="is_for_sale" type="boolean" indexed="true" stored="true" /> <field name="status" type="string" indexed="true" stored="true" /> <field name="shipment" type="tfloat" indexed="true" stored="true" /> <field name="timestamp" type="tdate" indexed="true" stored="true" default="NOW" /> <!-- catch all field,must be multiValued if any of its source fields is --> <field name="quick_search" type="text" indexed="true" stored="false" /> <!-- mandatory --> <field name="_version_" type="tlong" indexed="true" stored="true" /> </fields> <uniqueKey>id_object</uniqueKey> <copyField source="id_object" dest="quick_search" /> <copyField source="title" dest="quick_search" /> <copyField source="artist" dest="quick_search" /> <copyField source="searchname" dest="quick_search" /> <copyField source="technique_group" dest="quick_search" /> <copyField source="technique" dest="quick_search" /> <copyField source="color_type" dest="quick_search" /> <copyField source="color" dest="quick_search" /> <copyField source="subject" dest="quick_search" /> <types> <fieldtype name="string" class="solr.StrField" /> <fieldtype name="boolean" class="solr.BoolField" /> <fieldtype name="tint" class="solr.TrieIntField" /> <fieldtype name="tlong" class="solr.TrieLongField" /> <fieldtype name="tfloat" class="solr.TrieFloatField" /> <fieldtype name="tdate" class="solr.TrieDateField" /> <fieldtype name="text" class="solr.TextField"/> </types> </schema>
那里没有一个multiValued字段.尽管如此,我尝试单独为每个字段明确设置multiValued =’false’,但无济于事.即使我将整个架构剥离到少数String字段,它仍然会生成该错误.
我非常有信心我的schema.xml没问题,但也许某些设置应该告诉Solr放轻松.
<lst name="typeMapping"> <str name="valueClass">java.lang.Boolean</str> <str name="fieldType">booleans</str> </lst>
在这里你需要将“布尔”改为“布尔”.
<lst name="typeMapping"> <str name="valueClass">java.lang.Boolean</str> <str name="fieldType">boolean</str> </lst>
然后它会工作..
请检查链接
http://events.linuxfoundation.org/sites/events/files/slides/whats-new-in-apache-solr.pdf