El último paso es que los documentos se encuentren. Este capítulo monta tres vías complementarias: un listado filtrable del repositorio con Views, un buscador que lee el texto de dentro de los ficheros con Search API y facetas, y una navegación con menús y bloques pensada para cada rol.
1. El repositorio: una vista con filtros
Views viene en el núcleo y es la herramienta para cualquier listado. En /admin/structure/views/add:
- Mostrar Contenido del tipo Documento, ordenado por fecha de creación, descendente.
- Crear una página con la ruta
/documentos, formato Tabla de Campos y 50 elementos por página con paginador. - Campos: título (enlazado a la ficha), tipo documental, área, fecha del documento, versión y fichero.
- En la configuración de la tabla, marca las columnas como ordenables y la fecha del documento como orden por defecto.
Después, en Criterios de filtrado, añade filtros expuestos para que el lector pueda afinar:
- Tipo documental: filtro de término como lista desplegable.
- Área: usa el filtro Tiene ID de término de taxonomía (con profundidad), para que al elegir «Administración» salgan también los documentos de «Contabilidad». Ponle como identificador
area: lo usarán los menús. - Fecha del documento: con el operador Está entre.
- Texto: Filtro de campos combinados sobre título, código y resumen.
No desactives la reescritura SQL. En Avanzado › Configuración de la consulta hay una opción Desactivar reescritura de SQL. Si se marca, la vista deja de aplicar el control de acceso por documento (el de Group u otro módulo similar) y listaría títulos que el usuario no debería ver.
2. Bloques útiles para cada rol
Desde la misma vista se pueden añadir displays de tipo bloque, cada uno con sus filtros:
| Bloque | Filtro clave | Para quién |
|---|---|---|
| Últimos documentos | Publicado; 5 elementos por fecha de actualización | Todos, en la portada |
| Mis documentos | Autor = usuario actual (filtro contextual o relación con el autor) | Autores |
| Pendientes de revisión | Estado de moderación = En revisión | Revisores |
| Revisión vencida | Fecha de revisión anterior a now; publicado | Revisores |
Los bloques se colocan en /admin/structure/block. En la configuración de cada uno, la pestaña Roles limita quién lo ve y la pestaña Páginas, en qué rutas aparece.
3. Búsqueda dentro de los ficheros
El buscador del núcleo solo indexa el texto de las fichas, no el de los PDF adjuntos. Para buscar dentro de los ficheros se usan tres módulos contribuidos:
- Search API: el marco de indexación. Incluye un servidor sobre la propia base de datos (
search_api_db) que no necesita instalar nada más. - Search API Attachments: extrae el texto de los ficheros para indexarlo.
- Facets: los filtros laterales con recuento («Contrato (34)», «Informe (12)»).
La última línea desinstala el buscador del núcleo para que no haya dos buscadores distintos en el sitio.
El extractor de texto
Search API Attachments no lee los ficheros por sí mismo: delega en un extractor, que se elige en /admin/config/search/search_api_attachments. Las dos opciones habituales:
- pdftotext (del paquete poppler-utils): sencillo, pero solo lee PDF.
- Apache Tika en modo servidor: lee PDF, Word, Excel, PowerPoint, OpenDocument y muchos más formatos. Necesita Java o, más cómodo, ejecutarse en un contenedor Docker con la imagen oficial
apache/tika.
Si el repositorio es sobre todo de PDF, pdftotext basta. Si hay muchos documentos de Office, compensa Tika.
El índice
- En
/admin/config/search/search-api, Añadir servidor con el backend Base de datos. - Añadir índice sobre ese servidor, con la fuente de datos Contenido limitada al tipo Documento.
- En Procesadores, activa como mínimo Content access, Entity status, File attachments, HTML filter e Ignore case. Content access es imprescindible: sin él, el buscador mostraría resultados de documentos que el usuario no puede abrir.
- En Campos, añade título, resumen, código, los nombres de los términos de tipo, área y proyecto, y el campo de texto extraído del fichero que crea el procesador File attachments. Marca como texto completo los que se buscan por palabras y como cadena los que se usarán como faceta.
- Indexa con
ddev drush search-api:index. A partir de ahí, cada documento nuevo o modificado se indexa en el siguiente cron.
La página de búsqueda y las facetas
Con Search API, la página de resultados es otra vista: en /admin/structure/views/add, elige mostrar Índice Documentos, crea una página en /buscar y añade el filtro expuesto Búsqueda de texto completo. Después, en /admin/config/search/facets, crea una faceta por cada criterio (tipo documental, área, año del documento) usando esa página como fuente, y coloca los bloques de facetas en la barra lateral, visibles solo en /buscar.
Para unos miles de documentos el backend de base de datos suele ser suficiente. Si el repositorio crece mucho o necesitas mejor relevancia en español (plurales, variantes de una misma palabra), el siguiente paso es Apache Solr con el módulo Search API Solr, sin cambiar las vistas ni las facetas.
4. Menús y portada
- Portada: en
/admin/config/system/site-information, pon/documentoscomo página principal, o crea una página de inicio con el buscador y los bloques de últimos documentos. - Menú principal (
/admin/structure/menu/manage/main): un enlace a Documentos, otro a Buscar y, si las áreas son pocas, uno por área que apunte al listado ya filtrado, por ejemplo/documentos?area=12, donde 12 es el identificador del término. - Enlaces para autores y revisores: «Nuevo documento» (
/node/add/documento) y «Pendientes de revisión» (/admin/content/moderated). Los usuarios sin permiso no ven los enlaces de menú a rutas a las que no tienen acceso.
Lista de comprobación final
- Un usuario anónimo no ve nada y no puede descargar ningún fichero, ni siquiera con la URL directa.
- Un lector ve solo documentos publicados, en los listados y en la búsqueda.
- Un autor no puede publicar sin revisión, salvo que así se haya decidido.
- La búsqueda encuentra una frase que solo está dentro de un PDF.
- Las copias de seguridad incluyen la base de datos y la carpeta de ficheros privados, y se ha probado a restaurarlas.
- El cron se ejecuta solo y hay alguien encargado de aplicar las actualizaciones de seguridad.
Con esto el gestor documental está completo. El índice del libro, con el planteamiento general y cuándo conviene elegir otra herramienta, está en Cómo crear con Drupal un gestor documental web.
Contenido elaborado con asistencia de inteligencia artificial — Equipo Editorial Dataprix. Verifica la información antes de tomar decisiones.
