xml solr

Usar schema.xml en lugar de un esquema administrado con Solr 5.1.X



(3)

Estoy tratando de usar schema.xml con la última versión de Solr (5.1.0). Parece que, de forma predeterminada, Solr 5.1.0 usa un esquema administrado, pero me gustaría usar schema.xml para una colección específica.

Así que creo una nueva colección (usando solr create -c my_collection en windows y copio schema.xml desde

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

a

server/solr/my_collection/conf/schema.xml

Después de eso cambio la configuración en

server/solr/my_collection/conf/solrconfig.xml

usar

<schemaFactory class="ClassicIndexSchemaFactory"/>

Después de hacer esto obtengo una excepción al iniciar el servidor:

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

¿Estoy haciendo algo terriblemente mal aquí? ¿No debería funcionar este tipo de lógica?

ACTUALIZACIÓN: Strtrace se ve así:

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)


El problema es que está haciendo referencia a un tipo de campo booleans que no está definido en su archivo schema.xml . Al crear un núcleo, se crea un archivo managed-schema en server/solr/my_collection/conf/ . Cambie el nombre de este archivo a schema.xml y reinicie solr con ClassicIndexSchemaFactory y funcionará bien.


El problema que tenía aquí no tenía nada que ver con el uso del tipo de campo booleans . El problema fue que el archivo solrconfig.xml recién actualizado tiene un procesador para campos desconocidos habilitados de forma predeterminada, que necesita el tipo de campo booleans , y probablemente algunos otros.

Todos estos están definidos de forma predeterminada en el nuevo ejemplo schema.xml , pero posiblemente no en su antiguo schema.xml .

La solución para mí fue comentar la <updateRequestProcessorChain name="add-unknown-fields-to-the-schema"> en solrconfig.xml .

Alternativamente, probablemente solo puede reemplazar solrconfig.xml .


El tipo de campo {booleans} no está definido en schema.xml .

Pasos para solucionarlo,

  • Eliminar colección
  • Cambie el nombre del archivo de managed-schema a schema.xml
  • Modifique solrconfig.xml para reemplazar la clase schemaFactory.
  • a) Quite cualquier definición ManagedIndexSchemaFactory si existe.
  • b) Agregue una definición ClassicIndexSchemaFactory como se muestra a continuación,

<schemaFactory class="ClassicIndexSchemaFactory"/>

  • Actualice autoCreateFields a falso en solrconfig.xml o obtendrá

This IndexSchema is not mutable error This IndexSchema is not mutable .

${update.autoCreateFields:false}

  • Recrear colección.