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.

Extraer lista única de campos del documento coincidente.

Soy nuevo en Lucene, así que tal vez haya entendido algo mal sobre cómo funciona.

He indexado varios cientos de miles de documentos con muchos campos de texto. Por ejemplo, supongamos que tenemos 5 campos de texto (llamados A, B, C, D, E) y los primeros 3 están indexados (A, B, C), dejando los últimos dos sin indexar, solo incluidos en el documento (me refiero a D, E). Los valores en cada campo pueden ser duplicados, por ejemplo, supongamos que el campo A se utiliza para almacenar nombres y el nombre ‘Richard’ aparece muchas veces.

Cuando aplico una consulta, busco cada término en cada campo. Ahora, por ejemplo, supongamos que obtengo 3K documentos que coinciden con mi consulta.

¿Es posible obtener una lista de valores únicos (distintos) de cada campo sin escanear y agrupar el resultado? Me interesa especialmente esto porque aplico un límite a los documentos que realmente leo, pero me gustaría obtener una lista completa de valores únicos en cada campo (incluso los documentos que no leo) de los documentos que coinciden.

Si esto es posible, ¿puedo aplicar esta lógica incluso para campos no indexados (D, E)?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Según su descripción, parece que desea obtener valores distintos para cada campo de los documentos que coincidan con una consulta, sin tener que escanear y agrupar los resultados. Esto es posible con Lucene.

    Puede usar la API de Facetas (disponible tanto en Lucene como en Lucene.Net) para obtener los valores distintos para cada campo de los documentos que coincidan con una consulta. La API de Facetas le permite calcular facetas (es decir, recuentos de valores distintos) en campos indexados, así como en algunos campos no indexados (utilizando un mecanismo llamado DocValues).

    Para usar la API de Facetas, normalmente crearía un FacetsCollector y lo pasaría a la ejecución de su consulta, junto con otros parámetros requeridos (por ejemplo, un TaxonomyReader, que se utiliza para asignar los valores de los documentos a categorías). Una vez que se ejecuta la consulta, puede utilizar los resultados de FacetsCollector para obtener los recuentos de facetas (valores distintos de campo) para cada campo y mostrarlos en el formato deseado.

    Sin embargo, dado que tiene algunos campos no indexados (por ejemplo, D, E), no podrá utilizar la API de Facetas directamente en ellos. Para calcular facetas en campos no indexados, deberá crear un índice separado para cada campo no indexado, que contenga solo los valores de campo y un ID para hacer coincidirlos con el índice principal. Luego, puede utilizar el ID de los documentos coincidentes para obtener las facetas de los índices auxiliares.

    En general, aunque es posible calcular facetas para campos indexados con la API de Facetas, el cálculo de facetas para campos no indexados requiere una configuración adicional y puede ser menos eficiente.

Comments are closed.