web-dev-qa-db-fra.com

Erreur Solr Cet indexschema n'est pas mutable

Je souhaite utiliser le fichier schema.xml plutôt que le schéma géré, de sorte que j'ai modifié le texte suivant dans le fichier solrconfig.xml.

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

à

<schemaFactory class="ClassicIndexSchemaFactory"/> 

Mais je reçois l'indexschema n'est pas une erreur mutable lorsque j'essaie d'indexer un fichier plat à l'aide de la commande post.

27
Ajay K

Supprimez la section AddSchemaFieldsUpdateProcessorFactory de la configuration updateRequestProcessorChain dans votre solrconfig.xml

L'option schemaFactory dans solrconfig.xml . Elle détermine si le schéma doit être défini en tant que "schéma d'index géré": la modification de schéma n'est possible que par le biais de l'API de schéma . Par défaut, si aucun schéma n'est spécifié, alors le comportement par défaut est d'utiliser le "ClassicIndexSchemaFactory"

ClassicIndexSchemaFactory nécessite l’utilisation d’un fichier schema.xml, , Qui peut être modifié manuellement et n’est chargé que lorsque la collection est chargée. Ce paramètre n'autorise pas les méthodes de l'API de schéma qui modifient le schéma.

Lorsque ManagedIndexSchemaFactory est spécifié à la place, Solr chargera le schéma à partir de la ressource nommée dans managedSchemaResourceName, plutôt que de À partir de schema.xml.

AddSchemaFieldsUpdateProcessorFactory: ce processeur ajoute dynamiquement des champs au schéma si un document d'entrée contient un .__ ou plusieurs champs qui ne correspondent à aucun champ ou champ dynamique du schéma.

plus d'informations ici https://lucene.Apache.org/solr/4_6_0/solr-core/org/Apache/solr/update/processor/AddSchemaFieldsUpdateProcessorFactory.html

En bref, la fabrique de processus ci-dessus est utilisée pour le schéma géré . Si vous ne souhaitez pas utiliser ManagedIndexSchemaFactory, il doit être supprimé de updateRequestProcessorChain.

Pour plus de détails, vous pouvez consulter le code Solr ou lire le code source du AddSchemaFieldsUpdateProcessorFactory.Java Déboguer la méthode processAdd(AddUpdateCommand cm), vous aidera davantage.

65
Abhijit Bashetti

Au moins dans Solr 7.2, vous devriez probablement passer update.autoCreateFields à false dans la définition de updateRequestProcessorChain dans solrconfig.xml, comme l'indique le commentaire.

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

Cela a fonctionné pour et maintenant je ne reçois que de jolis messages d'erreur comme

Erreur du serveur à http: // localhost: 8983/solr : ERREUR: [doc = urn: nbn: cz: tst01-000001] champ inconnu 'titre'

alors que j'accorde mon schéma statique non géré dans schema.xml.

7
rzehan

Mettez à jour autoCreateFields à false dans solrconfig.xml.

${update.autoCreateFields:false}

1
Hemant Thorat

Je me rends compte que ce post est vieux, mais j'ai eu le même comportement aujourd'hui lors de l'importation d'un fichier json. Le problème était que le fichier .json n'était pas correctement formé. Il manquait les [] (crochets) en haut et en bas du fichier et le ',' (virgules) entre les objets. J'ai validé le fichier avec http://jslint.com/ . L'erreur a été résolue une fois que j'ai apporté ces modifications. 

REMARQUE: C’est ce qui a empêché la bonne constitution de mon dossier. Je vous suggèrerais de faire passer vos données par un type de validateur afin d’exclure le ou les problèmes que votre dossier pourrait avoir. 

J'espère que ça aide. 

0
r2coder