es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

La llamada de faceta del campo Solr es lenta en IntPointField pero más rápida para TrieIntField.

¿Por qué IntPointField tiene un rendimiento pobre en comparación con TrieIntField?

He configurado solr 8.7.0 en modo independiente, agregué core 1 y core 2 e indexé 100 millones de documentos en cada uno y luego ejecuté la faceta de campo de la siguiente manera:

facet.field=employee_ids&facet.field=employee_serial_numbers

Las definiciones de campo multivaluado en el core 1 son las siguientes:

<field name="employee_ids" type="pints" multivalued="true" indexed="true" required="false" stored="true" docvalues="true"></field>
<field name="employee_serial_numbers" type="pints" multivalued="true" indexed="true" required="false" stored="true" docvalues="true"></field>

<fieldtype name="pint" class="solr.IntPointField" docvalues="true"></fieldtype>
  • El valor predeterminado del método facet.method es fcs
  • Qtime se mantiene igual (~6000 ms) ya sea que haga una faceta de campo una vez, dos veces o n veces para los campos mencionados anteriormente.

Las definiciones de campo multivaluado en el core 2 son las siguientes:

<field name="employee_ids" type="tint" multivalued="true" indexed="true" required="false" stored="true"></field>
<field name="employee_serial_numbers" type="tint" multivalued="true" indexed="true" required="false" stored="true"></field>

<fieldtype name="tint" class="solr.TrieIntField"></fieldtype>
  • El valor predeterminado del método facet.method es fc
  • Qtime disminuye después de la primera llamada de faceta de campo en los campos mencionados anteriormente.
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    IntPointField tiene un rendimiento pobre en comparación con TrieIntField debido a la forma en que almacenan e indexan los datos. IntPointField almacena los valores en un formato binario compacto y de tamaño fijo, lo que lo hace más eficiente para consultas de rango y almacenamiento de números grandes, pero requiere más procesamiento durante la indexación y búsqueda. Por otro lado, TrieIntField almacena los valores en un formato de longitud variable y más flexible, lo que lo hace más eficiente para ordenar y facetar, pero menos eficiente para consultas de rango y almacenamiento de números grandes. Esto se debe a que TrieIntField utiliza una estructura de datos trie para almacenar los valores enteros de una manera más compacta y eficiente, mientras que IntPointField utiliza una codificación binaria directa que requiere más recursos para procesar. En general, TrieIntField es más adecuado para búsquedas facetadas y ordenamiento, mientras que IntPointField es mejor para consultas de rango y filtrado de grandes cantidades de valores.

Comments are closed.