query examples solr solr5

examples - solr documentation



¿Cómo funciona la característica sin esquema de Solr? ¿Cómo revertirlo al esquema clásico? (2)

Acabo de encontrar que Solr 5 no requiere un archivo de esquema para estar predefinido y genera el esquema, en función de la indexación realizada. Me gustaría saber cómo funciona esto en el fondo?

¿Y si es una buena práctica o no? Hay alguna manera de desactivarlo?


Esto es lo que se llama modo esquemático en Solr. No sé sobre detalles internos, cómo se implementa, etc.

bin/solr start -e schemaless

Este fragmento de código anterior iniciará Solr en modo esquemático; si no lo haces, funcionará como siempre.

Para obtener más información sobre los esquemas, consulte aquí: https://cwiki.apache.org/confluence/display/solr/Schemaless+Mode


La característica sin esquema ha estado en Solr desde la versión 4.3 . Pero podría ser más estable solo ahora, ya que se solucionó un problema de concurrencia en 4.10 .

También se le llama esquema administrado. Cuando configura Solr para usar un esquema administrado, Solr usa un UpdateRequestProcessor especial para interceptar las solicitudes de indexación de documentos y adivina los tipos de campo.

Solr comienza con su archivo schema.xml y crea un nuevo archivo llamado, por defecto, managed-schema para almacenar toda la información del esquema inferido. Este archivo es sobrescrito automáticamente por Solr ya que detecta cambios en el esquema.

A continuación, debe utilizar la API de esquema si desea realizar cambios en el esquema. Consulte también la documentación del modo sin esquemas .

Cómo cambiar el esquema administrado por Solr al esquema clásico

Stop Solr: $ bin/solr stop

Vaya a server/solr/mycore/conf , donde "mycore" es el nombre de su núcleo / colección.

Editar solrconfig.xml :

  • busque <schemaFactory class="ManagedIndexSchemaFactory"> y comente todo el elemento
  • busque <schemaFactory class="ClassicIndexSchemaFactory"/> y descoméntelo
  • busque el elemento <initParams> que hace referencia a add-unknown-fields-to-the-schema y comente todo el <initParams>...</initParams>

Cambie el nombre managed-schema a schema.xml y schema.xml terminado.

Ahora puede iniciar Solr de nuevo: $ bin/solr start , vaya a http://localhost:8983/solr/#/mycore/documents y compruebe que Solr ahora se niega a indexar un documento con un nuevo campo aún no especificado en el schema.xml .

¿Es una buena práctica? ¿Cuándo usarlo?

Depende de lo que quieras. Si desea imponer una estructura de documento específica (por ejemplo, para asegurarse de que todos los documentos estén "bien formados" de acuerdo con su definición), entonces desea utilizar la administración de esquemas clásica.

Si, por otro lado, no sabe por adelantado cuál es la estructura del documento, es posible que desee utilizar la función sin esquema.

Límites

Si bien se denomina sin esquema, existen límites para los tipos de estructuras que puede indexar. Esto es cierto tanto para Solr como para Elasticsearch, por cierto. Por ejemplo, si primero indexas este documento:

{"name":"John Doe"}

luego obtendrás un error si intentas indexar un documento como ese a continuación:

{"name": { "first": "Daniel", "second": "Dennett" } }

Esto se debe a que en el primer caso el name del campo era de tipo cadena, mientras que en el segundo caso es un objeto.

Si desea usar la indexación que va más allá de estas limitaciones, entonces podría usar SIREn , es un motor de recuperación de información semiestructurado de código abierto que se implementa como un complemento para Solr y Elasticsearch. ( Descargo de responsabilidad: trabajé para la empresa que desarrolla SIREn )