web-dev-qa-db-fra.com

Utilisation de schema.xml au lieu du schéma géré avec Solr 5.1.X

J'essaie d'utiliser schema.xml avec la dernière version de Solr (5.1.0). Il semble que par défaut Solr 5.1.0 utilise un schéma géré, mais je voudrais utiliser schema.xml pour une collection spécifique.

Je crée donc une nouvelle collection (en utilisant solr create -c my_collection sur windows et copie schema.xml depuis

server\solr\configsets\basic_configs\conf\schema.xml

à

server\solr\my_collection\conf\schema.xml

Après cela, je change les paramètres dans

server\solr\my_collection\conf\solrconfig.xml 

utiliser

<schemaFactory class="ClassicIndexSchemaFactory"/>

Après cela, j'obtiens une exception lors du démarrage du serveur:

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

Suis-je en train de faire quelque chose de terriblement mal ici? Ce type de logique ne devrait-il pas fonctionner?

MISE À JOUR: Stractrace ressemble à ceci:

org.Apache.solr.common.SolrException: fieldType 'booleans' not found in the schema
at org.Apache.solr.core.SolrCore.<init>(SolrCore.Java:885)
at org.Apache.solr.core.SolrCore.<init>(SolrCore.Java:652)
at org.Apache.solr.core.CoreContainer.create(CoreContainer.Java:518)
at org.Apache.solr.core.CoreContainer$1.call(CoreContainer.Java:283)
at org.Apache.solr.core.CoreContainer$1.call(CoreContainer.Java:277)
at Java.util.concurrent.FutureTask.run(FutureTask.Java:266)
at Java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.Java:1142)
at Java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.Java:617)
at Java.lang.Thread.run(Thread.Java:745)
Caused by: org.Apache.solr.common.SolrException: fieldType 'booleans' not found in the schema
at org.Apache.solr.update.processor.AddSchemaFieldsUpdateProcessorFactory$TypeMapping.populateValueClasses(AddSchemaFieldsUpdateProcessorFactory.Java:244)
at org.Apache.solr.update.processor.AddSchemaFieldsUpdateProcessorFactory.inform(AddSchemaFieldsUpdateProcessorFactory.Java:170)
at org.Apache.solr.core.SolrResourceLoader.inform(SolrResourceLoader.Java:620)
at org.Apache.solr.core.SolrCore.<init>(SolrCore.Java:868)
19
chris544

Le problème est que vous faites référence à un type de champ booleans qui n'est pas défini dans votre schema.xml fichier. Lorsque vous créez un noyau, un fichier managed-schema est créé dans server\solr\my_collection\conf\. Renommez ce fichier en schema.xml et redémarrez solr avec ClassicIndexSchemaFactory et cela fonctionnera bien.

23
Bruno dos Santos

Le problème que j'avais ici n'avait rien à voir avec l'utilisation du type de champ booleans. Le problème était que la nouvelle mise à niveau solrconfig.xml le fichier a un processeur pour les champs inconnus activé par défaut, qui a besoin du type de champ booleans, et probablement d'autres.

Celles-ci sont toutes définies par défaut dans le nouvel exemple schema.xml, mais probablement pas dans votre ancien schema.xml.

La solution pour moi était de commenter le <updateRequestProcessorChain name="add-unknown-fields-to-the-schema"> section dans solrconfig.xml.

Alternativement, vous pouvez probablement simplement remplacer solrconfig.xml.

10
Aeolun

Le type de champ {booléens} n'est pas défini dans schema.xml.

Étapes pour y remédier,

  • Supprimer la collection
  • Renommez le managed-schema fichier vers schema.xml
  • Modifier solrconfig.xml pour remplacer la classe schemaFactory.
  • a) Supprimez toute définition ManagedIndexSchemaFactory si elle existe.
  • b) Ajoutez une définition ClassicIndexSchemaFactory comme indiqué ci-dessous,

<schemaFactory class="ClassicIndexSchemaFactory"/>

  • Mettre à jour autoCreateFields à false dans solrconfig.xml ou vous obtiendrez

This IndexSchema is not mutable Erreur.

${update.autoCreateFields:false}

  • Recréer la collection.
0
Hemant Thorat