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)
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.
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
.
Le type de champ {booléens} n'est pas défini dans schema.xml
.
Étapes pour y remédier,
managed-schema
fichier vers schema.xml
solrconfig.xml
pour remplacer la classe schemaFactory.ManagedIndexSchemaFactory
si elle existe.ClassicIndexSchemaFactory
comme indiqué ci-dessous,<schemaFactory class="ClassicIndexSchemaFactory"/>
autoCreateFields
à false dans solrconfig.xml
ou vous obtiendrezThis IndexSchema is not mutable
Erreur.
${update.autoCreateFields:false}