2015-07-30 3 views
21

Ich möchte die schema.xml verwenden, anstatt dem verwalteten Schema so dass ich die folgenden in der solrconfig.xml an die untenSolr Fehler Dieser Indexschema nicht wandelbar ist

<schemaFactory class="ManagedIndexSchemaFactory"> 
    <bool name="mutable">true</bool> 
    <str name="managedSchemaResourceName">managed-schema</str> 
    </schemaFactory> 

zu

<schemaFactory class="ClassicIndexSchemaFactory"/> 
geändert

Aber ich bekomme Das Indexschema ist kein veränderbarer Fehler, wenn ich versuche, eine flache Datei mit dem Befehl post zu indexieren.

Antwort

56

Entfernen Sie den AddSchemaFieldsUpdateProcessorFactory Abschnitt aus der updateRequestProcessorChain config in Ihrem solrconfig.xml

Die schemaFactory Option in solrconfig.xml. Dies steuert, ob das Schema als "verwaltetes Indexschema" definiert werden soll: Schemaänderungen sind nur über die Schema-API möglich. standardmäßig, wenn kein schemaFactory angegeben ist, dann ist das Standardverhalten der "ClassicIndexSchemaFactory"

Die ClassicIndexSchemaFactory erfordert die Verwendung einer schema.xml-Datei zu verwenden, , die manuell bearbeitet werden können und nur nur dann geladen wird, wenn die Sammlung geladen. Diese Einstellung verhindert, dass Schema-API-Methoden das Schema ändern.

Wenn stattdessen ManagedIndexSchemaFactory angegeben wird, lädt Solr das Schema von der Ressource, die in managedSchemaResourceName benannt ist, anstatt von aus schema.xml.

AddSchemaFieldsUpdateProcessorFactory: Dieser Prozessor fügt dem Schema dynamisch Felder hinzu, wenn ein Eingabedokument einen oder mehrere Felder enthält, die keinem Feld oder dynamischem Feld im Schema entsprechen.

mehr auf dem gleichen lesen Sie hier https://lucene.apache.org/solr/4_6_0/solr-core/org/apache/solr/update/processor/AddSchemaFieldsUpdateProcessorFactory.html

Kurz gesagt, die oben Prozess Fabrik für verwaltete Schema verwendet wird. Wenn man ManagedIndexSchemaFactory nicht verwenden möchte, sollte es aus dem updateRequestProcessorChain entfernt werden.

Weitere Details davon können Sie den solr Code überprüfen oder den Quellcode der AddSchemaFieldsUpdateProcessorFactory.java Debug lesen die Methode processAdd(AddUpdateCommand cm), wird mehr auf dem gleichen helfen.

+2

Danke, große Antwort, arbeitete für mich großartig. Können Sie erläutern, warum dies getan werden muss? –

+0

Arbeitete auch für mich. Warum wird das nicht als Antwort ausgewählt? –

+0

Ich weiß wirklich nicht, warum er das noch nicht als Antwort akzeptiert hat: (... Obwohl es vielen geholfen hat. –

1

Mindestens in Solr 7.2 Sie wahrscheinlich wechseln nur sollte update.autoCreateFields zu falsch in der updateRequestProcessorChain Definition in solrconfig.xml als Kommentar an.

<!-- The update.autoCreateFields property can be turned to false to disable schemaless mode --> 
<updateRequestProcessorChain name="add-unknown-fields-to-the-schema" default="${update.autoCreateFields:false}" 
          processor="uuid,remove-blank,field-name-mutating,parse-boolean,parse-long,parse-double,parse-date,add-schema-fields"> 
    <processor class="solr.LogUpdateProcessorFactory"/> 
    <processor class="solr.DistributedUpdateProcessorFactory"/> 
    <processor class="solr.RunUpdateProcessorFactory"/> 
</updateRequestProcessorChain> 

Das arbeitete und jetzt bin ich nur ziemlich Fehlermeldungen wie

Error from server at http://localhost:8983/solr : ERROR: [doc=urn:nbn:cz:tst01-000001] unknown field 'title'

bekommen, wie ich mein statisches, nicht verwalteten Schema in schema.xml Tuning.

0

Ich weiß, dass dieser Beitrag alt ist, aber ich lief heute das gleiche Verhalten beim Importieren einer JSON-Datei. Das Problem war, dass die .json nicht richtig gebildet wurde. Es fehlten die [] (eckige Klammern) am oberen und unteren Rand der Datei und die ',' (Kommas) zwischen den Objekten.Ich habe die Datei mit http://jslint.com/ validiert. Der Fehler wurde behoben, sobald ich diese Änderungen vorgenommen habe.

HINWEIS: Dies waren die Probleme, die dazu führten, dass meine Datei nicht ordnungsgemäß erstellt wurde. Ich würde vorschlagen, dass Sie Ihre Daten durch eine Art von Validator laufen lassen, um alle Probleme auszuschließen, die Ihre Datei haben könnte.

Ich hoffe, das hilft.

0

Aktualisieren Sie autoCreateFields auf false in solrconfig.xml.

${update.autoCreateFields:false}

Verwandte Themen