solr solrj solr4

Configurando Solr para usar UUID como clave



solrj solr4 (2)

Estoy intentando configurar Solr 4 para que funcione con UUID y hasta ahora no he tenido éxito

Después de leer la documentación, he visto dos formas diferentes de configurar schemax.xml para trabajar con UUID (ambos no funcionan)

para ambos necesito escribir

<fieldType name="uuid" class="solr.UUIDField" indexed="true" />

Opción 1: agregar:

<field name="id" type="uuid" indexed="true" stored="true" default="NEW" multiValued="false"/>

y asegúrate de quitar la línea

<uniqueKey>id</uniqueKey>

opción 2 agregar:

<field name="id" type="uuid" indexed="true" stored="true" required="true" multiValued="false" />

Ambas opciones no funcionan correctamente y devuelven org.apache.solr.common.SolrException: org.apache.solr.common.SolrException: Error al inicializar QueryElevationComponent.

También intenté agregar una fila al archivo colrconfig.xml con la configuración:

<updateRequestProcessorChain name="uuid"> <processor class="solr.UUIDUpdateProcessorFactory"> <str name="fieldName">uniqueKey</str> </processor> <processor class="solr.RunUpdateProcessorFactory" /> </updateRequestProcessorChain>

Gracias,

Shimon


Es posible que desee eliminar el componente Query Elevation si no lo está utilizando.

QueryElevationComponent requiere que se defina una clave única y debe ser una clave única de cadena con JIRA .

Sin embargo, se corrigió con el alfa de Solr 4.0 por lo que dependería de la versión de Solr que esté utilizando.

Esta limitación está documentada en la wiki de Solr .


Después de un poco de trabajo aquí está la solución:

En schema.xml, agregue (o edite) el campo del campo

<field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" />

En la configuración de Solr, actualice la cadena y agregue la cadena a los manejadores (Ejemplo: para / actualizar / extraer):

<updateRequestProcessorChain name="uuid"> <processor class="solr.UUIDUpdateProcessorFactory"> <str name="fieldName">id</str> </processor> <processor class="solr.RunUpdateProcessorFactory" /> </updateRequestProcessorChain>` <requestHandler name="/update/extract" startup="lazy" class="solr.extraction.ExtractingRequestHandler" > <lst name="defaults"> <str name="lowernames">true</str> <str name="uprefix">ignored_</str> <str name="captureAttr">true</str> <str name="fmap.a">links</str> <str name="fmap.div">ignored_</str> <str name="update.chain">uuid</str> </lst> </requestHandler>