Contexto¿Cómo consigue Lucene/Solr un alto rendimiento en la búsqueda multicampo/facetada?
Ésta es una cuestión principalmente de Lucene (o posiblemente Solr) internos. El tema principal es búsqueda facetada, en la que la búsqueda puede realizarse a lo largo de múltiples dimensiones (facetas) independientes de objetos (por ejemplo, tamaño, velocidad, precio de un automóvil).
Cuando se implementa con base de datos relacional, para un gran número de facetas, los índices de múltiples campos no son útiles, ya que las facetas se pueden buscar en cualquier orden, por lo que se usa un multi-índice ordenado con pocas posibilidades, y creando todas las posibles ordenamientos de índices es insoportable.
Solr se anuncia que se adapta bien a la tarea de búsqueda facetada, que si creo correctamente tiene que estar conectada con Lucene (supuestamente) funcionando bien en consultas de campo múltiple (donde los campos de un documento se relacionan con las facetas de un objeto) .
Pregunta
El índice invertido de Lucene se pueden almacenar en una base de datos relacional, y, naturalmente, tomar las intersecciones de los documentos coincidentes también se puede lograr trivialmente con RDBMS utilizando índices de campo único.
Por lo tanto, se supone que Lucene tiene una técnica avanzada para consultas de campo múltiple además de simplemente tomar la intersección de documentos coincidentes en función del índice invertido.
Entonces la pregunta es, ¿qué es esta técnica/truco? Más ampliamente: ¿Por qué Lucene/Solr logra un mejor rendimiento de búsqueda facetada teóricamente que RDBMS podría (si es así)?
Nota: Mi primera conjetura sería que Lucene usaría algún método de partición del espacio para particionar un espacio vectorial construido a partir de los campos del documento como dimensiones, pero como tengo entendido, Lucene no se basa exclusivamente en el espacio vectorial.
Gracias. La publicación que señala escribe: "Las optimizaciones reales de Lucene provienen del hecho de que nunca busca todos los documentos que coinciden con la consulta, sino la parte superior k". En caso de búsqueda con facetas, creo que deben tenerse en cuenta todas las coincidencias. – ron
@ron: sí, no sé si el rendimiento de las consultas facetadas de Lucene es notablemente bueno. Pero no soy un experto en esta área. – Xodarap