Pregunta

Por ejemplo, decir que tengo el siguiente aspecto:

Colores

  • Red (7825)
  • Orange (2343)
  • Green (843)
  • Blue (5412)

En mi base de datos, los colores sería una mesa y cada color tendría una clave principal y un nombre / valor.

Al indexar con Solr / Lucene, en todos los ejemplos que he visto, el valor está indexado y no la clave primaria. Así que si el filtro por el color rojo, me gustaría tener algo como lo siguiente:

http://www.example.com/search?color=Red

Me estoy preguntando, ¿es prudente en lugar índice de la clave principal y recuperar los valores de la base de datos cuando se muestran los valores de faceta? Así que en lugar de obtener algo como esto:

http://www.example.com/search?color=1

"1" que representa la clave primaria del color rojo. Me pregunto si debería tomar este enfoque, ya que los valores de muchas de mis facetas cambian con frecuencia, pero las claves primarias permanecer igual. Además, se requiere que el índice esté en sincronización con la base de datos.

¿Tiene ya tiene alguna experiencia con esto? ¿Cómo cree que esto afectará el rendimiento?

Gracias de antemano!

¿Fue útil?

Solución

Si usted espera que sus entidades para cambiar con frecuencia, es más fácil para indexar la identificación de, y cuando obtenga los resultados de las facetas, hacer una búsqueda en la base de datos para obtener los nombres de los colores. De esa manera los cambios en los colores podrían no requieren documentos afectados que se actualicen en el índice.

En nuestro sistema, el índice Lucene de la ID en lugar del nombre de las entidades, precisamente por las razones que se indique. Además, nuestras entidades tienen un montón de propiedades asociadas con ellos, que no son indexados, por lo que tendríamos que golpear la base de datos para obtener de todos modos.

En cuanto al rendimiento, el facetado de ID de no ser visiblemente más lento o más rápido. En cuanto a las operaciones de búsqueda de bases de datos van, no debería ser un gran problema, especialmente si sólo está tirando hacia abajo decenas de facetas a la vez. Siempre se puede utilizar almacenamiento en caché para acelerar ese proceso si se convierte en un problema.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top