Recomiendo crear su índice de manera que todas las entidades tengan más o menos los mismos campos básicos: title, content, url, uuid, entity_type, entity_sourcename
etc. Si cada una de sus entidades tiene un conjunto único del campo de índice correspondiente, tendrá dificultades para construir consulta para buscar todas las entidades simultáneamente, y su vista de resultados puede convertirse en un gran desastre. Si necesita algunos campos específicos para una entidad específica, agréguelos y realice una lógica especial para esta entidad en función de su entity_type.
Estoy hablando por experiencia: estamos administrando un índice con más de 10 entidades diferentes y este enfoque funciona como encanto.
P.S. Algunos otros consejos simples.
- Asegúrese de que su documento Lucene contiene todos los datos necesarios para construir el resultado y mostrarlo al usuario (para que no tenga que ir a la base de datos para construir el resultado). Las consultas de Lucene son generalmente mucho más rápidas que las consultas de bases de datos.
- Si necesita usar la base de datos para construir su conjunto de resultados (por ejemplo, para aplicar permisos), use primero la consulta Lucene para reducir los resultados, la segunda consulta de la base de datos para filtrarlos.
- No tenga miedo de agregar campos personalizados a algunos de sus documentos si los necesita: piense en el documento Lucene como almacén de datos clave-valor.