Descripción general
El conector CSV proporciona la funcionalidad para obtener datos de archivos CSV y registrarlos en el índice de Fess.
Esta funcionalidad requiere el plugin fess-ds-csv.
Requisitos previos
Es necesario instalar el plugin
Se requiere acceso a los archivos CSV
Es necesario conocer la codificación de caracteres del archivo CSV
Instalación del plugin
Método 1: Colocar el archivo JAR directamente
Método 2: Instalar desde la pantalla de administración
Abrir «Sistema» -> «Plugins»
Subir el archivo JAR
Reiniciar Fess
Configuración
Configure desde la pantalla de administración en «Crawler» -> «Data Store» -> «Crear nuevo».
Configuración básica
| Campo | Ejemplo |
|---|---|
| Nombre | Products CSV |
| Nombre del handler | CsvDataStore |
| Habilitado | Activado |
Configuración de parámetros
Archivo local:
Múltiples archivos:
Nota
El procesamiento de comillas (quote) y el procesamiento de escape están deshabilitados por defecto. Si desea manejar CSV con caracteres separadores o saltos de línea dentro de campos entrecomillados (compatible con RFC 4180), especifique explícitamente quote_disabled=false para habilitar el procesamiento de comillas. Consulte la sección «Habilitación del procesamiento de comillas y escape» más adelante para más detalles.
Lista de parámetros
| Parámetro | Requerido | Descripción |
|---|---|---|
files | No | Ruta del archivo CSV (ruta local, múltiples rutas separadas por comas). Se requiere especificar files o directories. Si se especifican ambos, files tiene prioridad. Los archivos deben tener extensión .csv o .tsv; los archivos con otras extensiones son omitidos. |
directories | No | Ruta del directorio que contiene archivos CSV (múltiples rutas separadas por comas). Solo se procesan los archivos .csv y .tsv dentro del directorio. Se utiliza cuando no se especifica files. |
file_encoding | No | Codificación de caracteres (predeterminado: UTF-8) |
has_header_line | No | Si tiene fila de encabezado (predeterminado: false) |
separator_character | No | Carácter separador (predeterminado: coma ,). Se pueden especificar secuencias de escape como \t (separador de tabulador). |
quote_character | No | Carácter de comillas (predeterminado: comillas dobles "). Sin embargo, el procesamiento de comillas está deshabilitado por defecto (consulte quote_disabled). |
escape_character | No | Carácter de escape (predeterminado: barra invertida \). Sin embargo, el procesamiento de escape está deshabilitado por defecto (consulte escape_disabled). |
Nota
Si tanto files como directories están vacíos, se producirá un error (DataStoreException). Debe especificar al menos uno de los dos.
Parámetros avanzados
Los siguientes parámetros controlan de forma detallada el comportamiento del análisis del CSV:
| Parámetro | Descripción |
|---|---|
quote_disabled | Si deshabilitar el procesamiento de comillas (predeterminado: true). Especifique false para manejar campos entrecomillados compatibles con RFC 4180. |
escape_disabled | Si deshabilitar el procesamiento de escape (predeterminado: true). Especifique false para habilitar el escape mediante escape_character. |
skip_lines | Número de líneas iniciales a omitir (predeterminado: 0) |
ignore_line_patterns | Patrón de expresión regular para ignorar líneas (por ejemplo: ^#.* para ignorar líneas de comentario) |
ignore_empty_lines | Si ignorar las líneas vacías (predeterminado: false) |
ignore_trailing_whitespaces | Si ignorar los espacios en blanco al final (predeterminado: false) |
ignore_leading_whitespaces | Si ignorar los espacios en blanco al inicio (predeterminado: false) |
null_string | Cadena que se trata como valor nulo |
break_string | Cadena que reemplaza los saltos de línea dentro de los valores de campo |
readInterval | Tiempo de espera por cada registro procesado (milisegundos) (predeterminado: 0) |
Configuración de scripts
Los valores de cada campo se construyen referenciando los valores de cada columna del CSV. Las columnas del CSV pueden referenciarse directamente en el script como variables sin prefijo (no se usa ningún prefijo como data.).
Con encabezado (referenciando por nombre de columna):
Sin encabezado (referenciando por índice de columna):
Campos disponibles
<nombre_columna>- Referencia directa por nombre de columna del encabezado (solo cuandohas_header_line=truey el nombre de columna no está en blanco)cell<N>- Referencia por índice de columna (empezando desde 1:cell1,cell2…; disponible independientemente de si hay encabezado)csvfile- Ruta completa del archivo CSV que se está procesandocsvfilename- Nombre del archivo CSV que se está procesando
Nota
Si el nombre de columna contiene caracteres inválidos como identificadores de Groovy (espacios, guiones, etc.), no se puede referenciar por nombre de columna. En ese caso, use cell<N>.
Detalles del formato CSV
CSV estándar (compatible con RFC 4180)
Nota
Para incluir el carácter separador dentro de un campo entrecomillado como "Book, Programming" arriba, es necesario especificar quote_disabled=false para habilitar el procesamiento de comillas. Cuando el procesamiento de comillas está deshabilitado (valor predeterminado), las comillas se tratan como caracteres normales y los campos se dividen por el carácter separador.
Habilitación del procesamiento de comillas y escape
El procesamiento de comillas y el procesamiento de escape están deshabilitados por defecto. Habilítelos explícitamente de la siguiente manera.
Habilitar el procesamiento de comillas:
Habilitar el procesamiento de escape:
Cambiar el separador
Delimitado por tabulador (TSV):
Delimitado por punto y coma:
Comillas personalizadas
Comillas simples (requiere habilitar el procesamiento de comillas):
Codificación
Archivo en español con codificación Shift_JIS:
Archivo con codificación EUC-JP:
Ejemplos de uso
CSV de catálogo de productos
Archivo CSV (products.csv):
Parámetros:
Script:
Filtrado por información de stock:
CSV de directorio de empleados
Archivo CSV (employees.csv):
Parámetros:
Script:
CSV sin encabezado
Archivo CSV (data.csv):
Parámetros:
Script:
Integración de múltiples archivos CSV
Parámetros:
Script:
Archivo delimitado por tabulador (TSV)
Archivo TSV (data.tsv):
Parámetros:
Script:
Solución de problemas
Archivo no encontrado
Síntoma: El crawl se ejecuta pero el archivo no se procesa; el log muestra is not found
Verificaciones:
Verificar que la ruta del archivo sea correcta (se recomienda ruta absoluta)
Confirmar que el archivo existe
Verificar que la extensión del archivo sea
.csvo.tsv(los archivos con otras extensiones son omitidos)Verificar que tiene permisos de lectura
Confirmar que es accesible desde el usuario que ejecuta Fess
Caracteres ilegibles
Síntoma: Los caracteres no se muestran correctamente
Solución:
Especificar la codificación correcta:
Verificar la codificación del archivo:
Las columnas no se reconocen correctamente
Síntoma: El delimitador de columnas no se reconoce correctamente, o los campos entrecomillados se dividen incorrectamente
Verificaciones:
Verificar que el carácter separador sea correcto:
Para manejar campos entrecomillados (campos que contienen el carácter separador), habilitar el procesamiento de comillas:
Verificar el formato del archivo CSV (si cumple con RFC 4180)
Manejo de la fila de encabezado
Síntoma: La primera fila se reconoce como datos
Solución:
Cuando hay fila de encabezado:
Cuando no hay fila de encabezado:
No se obtienen datos
Síntoma: El crawl tiene éxito pero el conteo es 0
Verificaciones:
Verificar que el archivo CSV no esté vacío
Verificar que la configuración del script sea correcta (comprobar que las referencias a nombres de columna o
cell<N>no llevan el prefijodata.)Verificar que los nombres de columna sean correctos (cuando has_header_line=true)
Revisar los mensajes de error en el log
Archivo CSV grande
Síntoma: Memoria insuficiente o timeout
Solución:
Dividir el archivo CSV en varios
Usar solo las columnas necesarias en el script
Aumentar el tamaño del heap de Fess
Filtrar filas innecesarias
Campo con saltos de línea
En formato RFC 4180, los campos con saltos de línea pueden manejarse entrecomillándolos. Como el procesamiento de comillas está deshabilitado por defecto, es necesario especificar quote_disabled=false:
Parámetros:
CsvListDataStore
El plugin fess-ds-csv incluye, además de CsvDataStore, el handler CsvListDataStore.
CsvListDataStore extiende CsvDataStore y proporciona las siguientes funciones adicionales:
Procesamiento multihilo (controlado mediante el parámetro
numOfThreads)Eliminación automática de archivos CSV procesados
Filtrado de archivos basado en marca de tiempo (omite archivos que aún se están escribiendo)
Todos los parámetros y configuraciones de script de CsvDataStore pueden utilizarse sin cambios.
Configuración básica
| Campo | Ejemplo |
|---|---|
| Nombre del handler | CsvListDataStore |
Parámetros adicionales
| Parámetro | Requerido | Descripción |
|---|---|---|
timestamp_margin | No | Tiempo transcurrido desde la última modificación del archivo (milisegundos). Los archivos que no hayan superado este tiempo se consideran en proceso de escritura y son omitidos (predeterminado: 10000) |
numOfThreads | No | Número de hilos de procesamiento (predeterminado: 1) |
Nota
CsvListDataStore elimina automáticamente los archivos CSV tras procesarlos. Si se produce un error durante el procesamiento, el archivo se renombra con extensión .txt (si el renombrado falla, el archivo se elimina).
Ejemplos avanzados de scripts
Procesamiento de datos
Indexado condicional
Concatenación de múltiples columnas
Formato de fecha
Información de referencia
Descripción General de los Conectores de Almacén de Datos - Descripción general de conectores de Data Store
Conector JSON - Conector JSON
Conector de Base de Datos (Búsqueda en Bases de Datos) - Conector de base de datos
Rastreo de Almacén de Datos - Guía de configuración de Data Store