2015-07-09 5 views
6

Ich versuche einen Solr-Core mit meiner eigenen schema.xml laufen zu lassen, aber Solr (Version 5.2.1) beschwert sich über fehlende fieldType Elemente, die nicht gerade sind in meinen fields Definitionen.Solr error creating core: fieldType [x] nicht im Schema gefunden

org.apache.solr.common.SolrException: fieldType 'booleans' not found in the schema 

Immer, wenn ich eine ‚fehlenden‘ hinzufügen fieldtype ein weiterer Fehler über eine andere fieldType beschweren erscheint fehlt, wie longs, usw., bis ich sie alle und das Schema ohne Fehler akzeptiert wird hinzugefügt haben. Wie kann ich diese fieldtype Elemente bereitstellen, wenn sie nicht verwendet werden?

In config.xml ich habe:

<schemaFactory class="ClassicIndexSchemaFactory"/> 

Hier ist meine 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> 

Es in kein einziges multiValued Feld ist. Nichtsdestoweniger habe ich versucht, multiValued='false' für jedes Feld einzeln zu setzen, aber ohne Erfolg. Selbst wenn ich das gesamte Schema auf nur eine Handvoll von String Feldern entkleide, erzeugt es immer noch diesen Fehler.

Ich bin ziemlich zuversichtlich, dass meine schema.xml OK ist, aber vielleicht sollte irgendwo eine Einstellung Solr sagen, es leicht zu nehmen.

Antwort

4
<lst name="typeMapping"> 
    <str name="valueClass">java.lang.Boolean</str> 
    <str name="fieldType">booleans</str> 
</lst> 

hier müssen Sie "booleans" auf "boolean" korrigieren.

<lst name="typeMapping"> 
    <str name="valueClass">java.lang.Boolean</str> 
    <str name="fieldType">boolean</str> 
</lst> 

Dann wird es funktionieren ..

Bitte überprüfen Sie die Links

https://lucene.apache.org/solr/4_6_0/solr-core/org/apache/solr/update/processor/AddSchemaFieldsUpdateProcessorFactory.html

http://events.linuxfoundation.org/sites/events/files/slides/whats-new-in-apache-solr.pdf

+1

Das sieht nach einer viel eleganteren Lösung aus, als nur das Ganze zu kommentieren. Damit dies funktioniert, musste ich ** ManagedIndexSchemaFactory ** anstelle von ** ClassicIndexSchemaFactory ** verwenden, setze "mutable = true" und verwende einen anderen Namen als "schema.xml" – acdhirr

+0

in "Solr 6.3.0", es funktioniert auch. Benötigte Sektion kann in 'solrconfig.xml' gefunden werden. Übrigens musste ich auch 's' von' tdates', 'tlongs' und' tdoubles' entfernen. Ich habe 'solrconfig.xml' von' basic_configs' genommen. – TitanFighter

6

Nicht sicher, ob es der bevorzugte Weg ist, aber die solr.AddSchemaFieldsUpdateProcessorFactory Sektion in config.xml zu kommentieren scheint das Problem zu lösen.

<!-- 
<processor class="solr.AddSchemaFieldsUpdateProcessorFactory"> 
    <str name="defaultFieldType">strings</str> 
    <lst name="typeMapping"> 
    <str name="valueClass">java.lang.Boolean</str> 
    <str name="fieldType">booleans</str> 
    </lst> 
    <lst name="typeMapping"> 
    <str name="valueClass">java.util.Date</str> 
    <str name="fieldType">tdates</str> 
    </lst> 
    <lst name="typeMapping"> 
    <str name="valueClass">java.lang.Long</str> 
    <str name="valueClass">java.lang.Integer</str> 
    <str name="fieldType">tlongs</str> 
    </lst> 
    <lst name="typeMapping"> 
    <str name="valueClass">java.lang.Number</str> 
    <str name="fieldType">tdoubles</str> 
    </lst> 
</processor> 
--> 
+0

In meinem solr 5.2.1 Beispiel fand ich diesen Abschnitt in 'solrconfig.xml '. Das zu kommen, hat auch für mich funktioniert. Danke – Kirby

+0

Benutze Standard-CKan-Schema, auch für mer arbeitete. Vielen Dank! – Alex

Verwandte Themen