2015-07-30 8 views
21

voglio usare lo schema.xml piuttosto che lo schema gestito così ho cambiato quanto segue nella solrconfig.xml al di sottoSolr Errore Questo Indexschema non è mutabile

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

a

<schemaFactory class="ClassicIndexSchemaFactory"/> 

Ma ottengo L'indexschema non è un errore mutabile quando provo ad indicizzare un file flat usando il comando post.

risposta

56

Rimuovere la sezione AddSchemaFieldsUpdateProcessorFactory dal updateRequestProcessorChain config nella vostra solrconfig.xml

L'opzione schemaFactory in solrconfig.xml. Controlla se lo schema deve essere definito come "schema indice gestito": la modifica dello schema è possibile solo tramite l'API dello schema. Per default, se non viene specificato alcun schemaFactory, quindi il comportamento predefinito è utilizzare il "ClassicIndexSchemaFactory"

Il ClassicIndexSchemaFactory richiede l'utilizzo di un file schema.xml, che può essere modificato manualmente ed è caricato soltanto soltanto quando la raccolta è caricato. Questa impostazione non consente i metodi API dello schema che modificano lo schema.

Quando viene specificato ManagedIndexSchemaFactory, Solr caricherà lo schema dalla risorsa denominata in managedSchemaResourceName, anziché da da schema.xml.

AddSchemaFieldsUpdateProcessorFactory: questo processore aggiungerà dinamicamente i campi allo schema se un documento di input contiene uno o più campi che non corrispondono a nessun campo o campo dinamico nello schema.

saperne di più sullo stesso qui https://lucene.apache.org/solr/4_6_0/solr-core/org/apache/solr/update/processor/AddSchemaFieldsUpdateProcessorFactory.html

In breve la fabbrica processo di cui sopra è usato per lo schema gestito. Quando non si desidera utilizzare ManagedIndexSchemaFactory deve essere rimosso dall'aggiornamentoRequestProcessorChain.

Per maggiori dettagli di esso è possibile controllare il codice solr o leggere il codice sorgente del AddSchemaFieldsUpdateProcessorFactory.java Debug il metodo processAdd(AddUpdateCommand cm), aiuterà più lo stesso.

+2

Grazie, grande risposta, questo ha funzionato grande per me. Puoi approfondire perché questo deve essere fatto? –

+0

Ha funzionato anche per me. Perché non è selezionato come risposta? –

+0

Non so davvero perché non abbia ancora accettato questa risposta: (... Anche se ha aiutato molti ... –

1

Almeno in Solr 7.2 si dovrebbe probabilmente solo passare update.autoCreateFields a falso nella definizione updateRequestProcessorChain in solrconfig.xml come il commento indica.

<!-- 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> 

che ha lavorato per e ora sto ottenendo soltanto i messaggi di errore piuttosto come

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

come sto messa a punto la mia statica, lo schema non gestito in schema.xml.

0

Mi rendo conto che questo post è vecchio ma oggi ho eseguito lo stesso comportamento durante l'importazione di un file JSON. Il problema era che il .json non era formato correttamente. Mancavano le [] (parentesi quadre) nella parte superiore e inferiore del file e le "," (virgole) tra gli oggetti.Ho convalidato il file usando http://jslint.com/. L'errore è stato risolto dopo aver apportato queste modifiche.

NOTA: questi erano i problemi che impedivano al file di essere formato correttamente. Ti suggerirei di eseguire i tuoi dati attraverso un qualche tipo di validatore per escludere qualsiasi problema che il tuo file potrebbe avere.

Spero che questo aiuti.

0

Aggiornamento autoCreateFields su falso in solrconfig.xml.

${update.autoCreateFields:false}

Problemi correlati