Descripción General
Esta guía explica la configuración avanzada del rastreador de Fess. Para la configuración básica del rastreador, consulte Configuración del Rastreador: Rastreo Web, de Servidores de Archivos y de Bases de Datos.
Advertencia
Las configuraciones de esta página pueden afectar al sistema completo. Al modificar la configuración, realice pruebas exhaustivas antes de aplicarlas en el entorno de producción.
Configuración General
Ubicación de los Archivos de Configuración
La configuración avanzada del rastreador se realiza en los siguientes archivos:
Configuración principal:
/etc/fess/fess_config.properties(oapp/WEB-INF/classes/fess_config.properties)Configuración de longitud de contenido:
app/WEB-INF/classes/crawler/contentlength.xmlConfiguración de componentes:
app/WEB-INF/classes/crawler/container.xml
Script Predeterminado
Configura el lenguaje de script predeterminado del rastreador.
| Propiedad | Descripción | Valor Predeterminado |
|---|---|---|
crawler.default.script | Lenguaje de script del rastreador | groovy |
Pool de Hilos HTTP
Configuración del pool de hilos del rastreador HTTP.
| Propiedad | Descripción | Valor Predeterminado |
|---|---|---|
crawler.http.thread_pool.size | Tamaño del pool de hilos HTTP | 0 |
Configuración de Procesamiento de Documentos
Configuración Básica
| Propiedad | Descripción | Valor Predeterminado |
|---|---|---|
crawler.document.max.site.length | Longitud máxima de caracteres del campo de nombre del sitio | 100 |
crawler.document.site.encoding | Codificación del sitio del documento | UTF-8 |
crawler.document.unknown.hostname | Valor alternativo para nombres de host desconocidos | unknown |
crawler.document.use.site.encoding.on.english | Usar codificación del sitio en documentos en inglés | false |
crawler.document.append.data | Agregar datos al documento | true |
crawler.document.append.filename | Agregar nombre de archivo al documento | false |
Ejemplo de Configuración
Configuración de Procesamiento de Palabras
| Propiedad | Descripción | Valor Predeterminado |
|---|---|---|
crawler.document.max.alphanum.term.size | Longitud máxima de palabras alfanuméricas | 20 |
crawler.document.max.symbol.term.size | Longitud máxima de palabras con símbolos | 10 |
crawler.document.duplicate.term.removed | Eliminar palabras duplicadas | false |
Ejemplo de Configuración
Nota
Aumentar max.alphanum.term.size permite indexar IDs largos, tokens, URLs, etc. en su forma completa, pero aumentará el tamaño del índice.
Configuración de Procesamiento de Caracteres
| Propiedad | Descripción | Valor Predeterminado |
|---|---|---|
crawler.document.space.chars | Definición de caracteres de espacio | u0009u000A... |
crawler.document.fullstop.chars | Definición de caracteres de punto final | u002eu06d4... |
Ejemplo de Configuración
Configuración de Protocolos
Protocolos Compatibles
| Propiedad | Descripción | Valor Predeterminado |
|---|---|---|
crawler.web.protocols | Protocolos para rastreo web | http,https |
crawler.file.protocols | Protocolos para rastreo de archivos | file,smb,smb1,ftp,storage,s3,gcs |
crawler.crawling.data.encoding | Codificación de datos de rastreo | UTF-8 |
Ejemplo de Configuración
Parámetros de Variables de Entorno
| Propiedad | Descripción | Valor Predeterminado |
|---|---|---|
crawler.data.env.param.key.pattern | Patrón de clave de parámetro de variable de entorno | ^FESS_ENV_.* |
Serializador de Datos
| Propiedad | Descripción | Valor Predeterminado |
|---|---|---|
crawler.data.serializer | Método de serialización para datos de rastreo | kryo |
Configuración de robots.txt
| Propiedad | Descripción | Valor Predeterminado |
|---|---|---|
crawler.ignore.robots.txt | Ignorar robots.txt | false |
crawler.ignore.robots.tags | Ignorar etiquetas meta robots | false |
crawler.ignore.content.exception | Ignorar excepción de contenido | true |
Advertencia
Configurar crawler.ignore.robots.txt=true puede violar los términos de servicio del sitio. Tenga cuidado al rastrear sitios externos.
Configuración de Manejo de Errores
| Propiedad | Descripción | Valor Predeterminado |
|---|---|---|
crawler.failure.url.status.codes | Códigos de estado HTTP considerados como fallo (separados por comas) | 404,403,410 |
Configuración de Monitoreo del Sistema
| Propiedad | Descripción | Valor Predeterminado |
|---|---|---|
crawler.system.monitor.interval | Intervalo de monitoreo del sistema (segundos) | 60 |
Configuración de Hot Threads
| Propiedad | Descripción | Valor Predeterminado |
|---|---|---|
crawler.hotthread.ignore_idle_threads | Ignorar hilos inactivos | true |
crawler.hotthread.interval | Intervalo de instantáneas | 500ms |
crawler.hotthread.snapshots | Número de instantáneas | 10 |
crawler.hotthread.threads | Número de hilos a monitorear | 3 |
crawler.hotthread.timeout | Tiempo de espera | 30s |
crawler.hotthread.type | Tipo de monitoreo | cpu |
Ejemplo de Configuración
Configuración de Metadatos
| Propiedad | Descripción | Valor Predeterminado |
|---|---|---|
crawler.metadata.content.excludes | Metadatos a excluir | resourceName,X-Parsed-By... |
crawler.metadata.name.mapping | Mapeo de nombres de metadatos | title=title:string... |
Configuración del Rastreador HTML
Configuración de XPath
Configuración de XPath para extraer elementos HTML.
| Propiedad | Descripción | Valor Predeterminado |
|---|---|---|
crawler.document.html.content.xpath | XPath del contenido | //BODY |
crawler.document.html.lang.xpath | XPath del idioma | //HTML/@lang |
crawler.document.html.digest.xpath | XPath del resumen | //META[@name='description']/@content |
crawler.document.html.canonical.xpath | XPath de URL canónica | //LINK[@rel='canonical'][1]/@href |
Ejemplo de Configuración
Ejemplos de XPath Personalizados
Procesamiento de Etiquetas HTML
| Propiedad | Descripción | Valor Predeterminado |
|---|---|---|
crawler.document.html.pruned.tags | Etiquetas HTML a eliminar | noscript,script,style,header,footer,aside,nav,a[rel=nofollow] |
crawler.document.html.max.digest.length | Longitud máxima del resumen | 120 |
crawler.document.html.default.lang | Idioma predeterminado | (vacío) |
Ejemplo de Configuración
Filtros de Patrón de URL
| Propiedad | Descripción | Valor Predeterminado |
|---|---|---|
crawler.document.html.default.include.index.patterns | Patrones de URL a incluir en el índice | (vacío) |
crawler.document.html.default.exclude.index.patterns | Patrones de URL a excluir del índice | (?i).*(css|js|jpeg...) |
crawler.document.html.default.include.search.patterns | Patrones de URL a incluir en resultados de búsqueda | (vacío) |
crawler.document.html.default.exclude.search.patterns | Patrones de URL a excluir de resultados de búsqueda | (vacío) |
Ejemplo de Configuración
Configuración del Rastreador de Archivos
Configuración Básica
| Propiedad | Descripción | Valor Predeterminado |
|---|---|---|
crawler.document.file.name.encoding | Codificación del nombre de archivo | (vacío) |
crawler.document.file.no.title.label | Etiqueta para archivos sin título | No title. |
crawler.document.file.ignore.empty.content | Ignorar contenido vacío | false |
crawler.document.file.max.title.length | Longitud máxima del título | 100 |
crawler.document.file.max.digest.length | Longitud máxima del resumen | 200 |
Ejemplo de Configuración
Procesamiento de Contenido
| Propiedad | Descripción | Valor Predeterminado |
|---|---|---|
crawler.document.file.append.meta.content | Agregar metadatos al contenido | true |
crawler.document.file.append.body.content | Agregar cuerpo al contenido | true |
crawler.document.file.default.lang | Idioma predeterminado | (vacío) |
Ejemplo de Configuración
Filtros de Patrón de URL de Archivos
| Propiedad | Descripción | Valor Predeterminado |
|---|---|---|
crawler.document.file.default.include.index.patterns | Patrones a incluir en el índice | (vacío) |
crawler.document.file.default.exclude.index.patterns | Patrones a excluir del índice | (vacío) |
crawler.document.file.default.include.search.patterns | Patrones a incluir en resultados de búsqueda | (vacío) |
crawler.document.file.default.exclude.search.patterns | Patrones a excluir de resultados de búsqueda | (vacío) |
Ejemplo de Configuración
Anulación de Detección de Tipo MIME
De forma predeterminada, Fess utiliza Apache Tika para la detección de tipo MIME basada en contenido. En algunos casos, la detección basada en contenido puede producir resultados incorrectos. Por ejemplo, los archivos SQL de Oracle que comienzan con comentarios REM pueden ser detectados erróneamente como archivos por lotes (application/x-bat) porque la palabra clave REM coincide con el patrón mágico de los archivos por lotes.
La propiedad crawler.document.mimetype.extension.overrides permite anular la detección de tipo MIME basándose en extensiones de archivo, omitiendo la detección basada en contenido para tipos de archivo específicos.
| Propiedad | Descripción | Valor Predeterminado |
|---|---|---|
crawler.document.mimetype.extension.overrides | Asignaciones de extensión a tipo MIME (una por línea, formato: .ext=mime/type) | (vacío) |
Ejemplo de Configuración
Cada línea contiene una asignación en el formato .ext=mime/type. Las asignaciones múltiples se separan con \n (nueva línea). La coincidencia de extensiones no distingue entre mayúsculas y minúsculas (.SQL y .sql se tratan igual).
Nota
Cuando una extensión de archivo coincide con una entrada en este mapa, el tipo MIME configurado se devuelve inmediatamente sin realizar la detección basada en contenido. Los archivos con extensiones que no están en el mapa continúan usando la detección normal de Tika.
Configuración de Caché
Caché de Documentos
| Propiedad | Descripción | Valor Predeterminado |
|---|---|---|
crawler.document.cache.enabled | Habilitar caché de documentos | true |
crawler.document.cache.max.size | Tamaño máximo de caché (bytes) | 2621440 (2.5MB) |
crawler.document.cache.supported.mimetypes | Tipos MIME a almacenar en caché | text/html |
crawler.document.cache.html.mimetypes | Tipos MIME a tratar como HTML | text/html |
Ejemplo de Configuración
Nota
Al habilitar la caché, se muestra un enlace de caché en los resultados de búsqueda, lo que permite a los usuarios ver el contenido en el momento del rastreo.
Opciones de JVM
Puede configurar las opciones de JVM para el proceso del rastreador.
| Propiedad | Descripción | Valor Predeterminado |
|---|---|---|
jvm.crawler.options | Opciones de JVM del rastreador | -Xms128m -Xmx512m... |
Configuración Predeterminada
Nota
Lo anterior muestra solo las opciones principales. Los valores predeterminados reales incluyen aproximadamente 40 opciones que cubren tiempos de espera jcifs SMB, configuración de Netty, configuración de Log4j, configuración detallada de G1GC, configuración de PDFBox, etc. Consulte fess_config.properties para los valores predeterminados completos. Al personalizar, cambie solo las opciones necesarias y mantenga los demás valores predeterminados.
Descripción de las Opciones Principales
| Opción | Descripción |
|---|---|
-Xms128m | Tamaño inicial del heap (128MB) |
-Xmx512m | Tamaño máximo del heap (512MB) |
-XX:MaxMetaspaceSize=128m | Tamaño máximo del Metaspace (128MB) |
-XX:+UseG1GC | Usar recolector de basura G1 |
-XX:MaxGCPauseMillis=60000 | Objetivo de tiempo de pausa del GC (60 segundos) |
-XX:-HeapDumpOnOutOfMemoryError | Deshabilitar heap dump en OutOfMemory |
Ejemplos de Configuración Personalizada
Al rastrear archivos grandes:
Durante depuración:
Para más detalles, consulte Configuración de Memoria.
Optimización del Rendimiento
Optimización de la Velocidad de Rastreo
1. Ajuste del Número de Hilos
Puede mejorar la velocidad de rastreo aumentando el número de rastreos paralelos.
Sin embargo, tenga cuidado con la carga en el servidor objetivo.
2. Ajuste de Tiempos de Espera
Para sitios con respuesta lenta, ajuste los tiempos de espera.
3. Exclusión de Contenido Innecesario
Excluir imágenes, CSS, archivos JavaScript, etc. puede mejorar la velocidad de rastreo.
4. Configuración de Reintentos
El número de reintentos del rastreo HTTP (predeterminado 5) y el intervalo de reintento (predeterminado 500 ms) son valores fijos integrados y no pueden modificarse desde el campo «Parámetros de configuración» de una configuración de rastreo. Para reducir el tiempo de espera ante URLs que no responden, ajuste los tiempos de espera descritos anteriormente o excluya las URLs innecesarias.
Optimización del Uso de Memoria
1. Ajuste del Tamaño del Heap
2. Ajuste del Tamaño de Caché
3. Exclusión de Archivos Grandes
Para más detalles, consulte Configuración de Memoria.
Mejora de la Calidad del Índice
1. Optimización de XPath
Excluya elementos innecesarios (navegación, publicidad, etc.).
2. Optimización del Resumen
3. Mapeo de Metadatos
Solución de Problemas
Falta de Memoria
Síntomas:
Se registra
OutOfMemoryErrorenfess_crawler.logEl rastreo se detiene a mitad de camino
Soluciones:
Aumentar el tamaño del heap del rastreador
Reducir el número de hilos paralelos
Excluir archivos grandes
Para más detalles, consulte Configuración de Memoria.
Rastreo Lento
Síntomas:
El rastreo tarda demasiado tiempo
Se producen tiempos de espera frecuentes
Soluciones:
Aumentar el número de hilos (tenga cuidado con la carga del servidor objetivo)
Ajustar los tiempos de espera
Excluir URLs innecesarias
No se Puede Extraer Contenido Específico
Síntomas:
El texto de la página no se extrae correctamente
La información importante no se incluye en los resultados de búsqueda
Soluciones:
Verificar y ajustar el XPath
Verificar las etiquetas eliminadas
Para contenido generado dinámicamente con JavaScript, considere métodos alternativos (como rastreo de API)
Caracteres Corruptos
Síntomas:
Se producen caracteres corruptos en los resultados de búsqueda
Ciertos idiomas no se muestran correctamente
Soluciones:
Verificar la configuración de codificación
Configurar la codificación de nombres de archivo
Verificar errores de codificación en los registros
Mejores Prácticas
Verificar en Entorno de Prueba
Realice pruebas exhaustivas en un entorno de prueba antes de aplicar en producción.
Ajuste Gradual
No realice cambios grandes a la configuración de una sola vez, ajuste gradualmente y verifique los efectos.
Monitoreo de Registros
Después de cambiar la configuración, monitoree los registros para verificar que no haya errores o problemas de rendimiento.
Respaldo
Siempre realice una copia de seguridad antes de modificar archivos de configuración.
Documentación
Documente los cambios realizados en la configuración y su justificación.
Configuración del Rastreador S3/GCS
Rastreador S3
Configuración para rastrear Amazon S3 y almacenamiento compatible con S3 (MinIO, etc.). Escriba lo siguiente en «Parámetros de configuración» de la configuración de rastreo de archivos.
| Parámetro | Descripción | Valor Predeterminado |
|---|---|---|
client.endpoint | URL del endpoint de S3 | (obligatorio) |
client.accessKey | Clave de acceso | (obligatorio) |
client.secretKey | Clave secreta | (obligatorio) |
client.region | Región de AWS | us-east-1 |
client.maxContentLength | Tamaño máximo (bytes) de los objetos a obtener; los objetos más grandes se omiten | (ilimitado) |
client.maxCachedContentSize | Tamaño máximo (bytes) almacenado en memoria caché; el contenido mayor utiliza un archivo temporal | 1048576 (1MB) |
client.accessTimeout | Tiempo de espera de acceso (segundos). Se deshabilita cuando no está configurado | (ilimitado) |
Ejemplo de Configuración
Rastreador GCS
Configuración para rastrear Google Cloud Storage. Escriba lo siguiente en «Parámetros de configuración» de la configuración de rastreo de archivos.
| Parámetro | Descripción | Valor Predeterminado |
|---|---|---|
client.projectId | ID del proyecto de Google Cloud | (obligatorio) |
client.credentialsFile | Ruta del archivo JSON de la cuenta de servicio | (opcional) |
client.endpoint | Endpoint personalizado | (opcional) |
client.maxContentLength | Tamaño máximo (bytes) de los objetos a obtener; los objetos más grandes se omiten | (ilimitado) |
client.maxCachedContentSize | Tamaño máximo (bytes) almacenado en memoria caché; el contenido mayor utiliza un archivo temporal | 1048576 (1MB) |
client.accessTimeout | Tiempo de espera de acceso (segundos). Se deshabilita cuando no está configurado | (ilimitado) |
Ejemplo de Configuración
Nota
Si omite credentialsFile, se usará la variable de entorno GOOGLE_APPLICATION_CREDENTIALS.
Rastreo de Contenido Dinámico (Playwright)
Las páginas renderizadas mediante JavaScript (como las SPA) solo devuelven el HTML previo al renderizado al rastreador HTTP habitual, por lo que su texto principal nunca se indexa. El rastreador Playwright renderiza primero la página en un navegador sin interfaz gráfica y después obtiene el contenido.
Habilitación
Escriba lo siguiente en «Parámetros de configuración» de una configuración de rastreo web.
La parte que sigue a playwright: es una expresión regular de las URL que se obtendrán con Playwright. En el ejemplo anterior, todas las URL HTTP/HTTPS se obtienen con Playwright. Para usar Playwright únicamente en determinados sitios, especifíquelos de la siguiente manera.
Nota
Los binarios del navegador de Playwright no se incluyen en el paquete de Fess. Se descargan durante el primer rastreo, por lo que en un entorno sin acceso a la red externa debe instalarlos previamente con el usuario del sistema operativo que ejecuta el rastreador.
Parámetros de Configuración
Los siguientes parámetros se escriben en «Parámetros de configuración» de una configuración de rastreo con el prefijo client..
| Parámetro | Descripción | Valor Predeterminado |
|---|---|---|
client.renderedState | Estado de carga que se espera antes de obtener el contenido. Especifique LOAD, DOMCONTENTLOADED o NETWORKIDLE en mayúsculas | NETWORKIDLE |
client.renderedStateTimeout | Límite de espera de renderedState (milisegundos). Con un valor menor o igual que cero se usa el valor predeterminado de Playwright (30000) | 0 |
client.navigationTimeout | Límite de una navegación (milisegundos). Con un valor menor o igual que cero se usa el valor predeterminado de Playwright (30000) | (sin configurar) |
client.contentWaitDuration | Espera adicional tras alcanzar renderedState y antes de obtener el contenido (milisegundos) | 0 |
client.sharedClient | Compartir el worker (navegador) de Playwright entre todos los clientes | false |
client.blockedResourceTypes | Tipos de recursos que el navegador no debe obtener (separados por comas) | (vacío) |
client.ignoreHttpsErrors | Ignorar los errores de validación del certificado HTTPS | false |
client.proxyBypass | Hosts que omiten el proxy (separados por comas) | (vacío) |
Ejemplo de Configuración
Nota
El User Agent y los encabezados de solicitud definidos en la configuración de rastreo se utilizan tal cual. Los parámetros comunes como client.proxyHost, client.proxyPort y client.maxContentLength también se aplican al navegador.
Nota
Un cliente de Playwright utiliza una única página del navegador y sus solicitudes se procesan en serie. Aumentar el número de hilos en la configuración de rastreo no acelera proporcionalmente la obtención con Playwright.
Elementos Configurables Solo en la Definición DI
Los siguientes elementos no se pueden cambiar desde «Parámetros de configuración». Para modificarlos, cree app/WEB-INF/classes/crawler/client+playwrightClient.xml y redefina el componente playwrightClient.
| Propiedad | Descripción | Valor Predeterminado |
|---|---|---|
browserName | Navegador que se utilizará: chromium, firefox o webkit | chromium |
launchOptions | Opciones de inicio del navegador (BrowserType.LaunchOptions) | headless=true |
newContextOptions | Opciones del contexto del navegador (Browser.NewContextOptions) | (ninguno) |
downloadTimeout | Límite de espera para la descarga de un archivo (segundos) | 15 |
closeTimeout | Límite de espera para el cierre del navegador (segundos) | 15 |
Ejemplo de Configuración
Nota
Al redefinir playwrightClient, la definición del componente que el plugin tiene en crawler/client++.xml se reemplaza por completo. Las propiedades que no escriba vuelven a sus valores predeterminados, por lo que debe escribir todas las propiedades que necesite, como en el ejemplo anterior. Tampoco copie crawler/client++.xml tal cual en esa ubicación: el mismo componente quedaría registrado dos veces y el inicio fallaría.
Advertencia
downloadTimeout y closeTimeout se expresan en segundos, mientras que navigationTimeout, renderedStateTimeout y contentWaitDuration se expresan en milisegundos. Tenga cuidado de no confundirlos.
Bloqueo de Recursos Innecesarios
client.blockedResourceTypes admite una lista separada por comas de los tipos de recursos que el navegador no debe obtener. Los valores son los tipos de recurso de Playwright (stylesheet, image, media, font, script, texttrack, xhr, fetch, eventsource, websocket, manifest, other, ping, cspreport y beacon). De forma predeterminada no se bloquea nada.
image, media, font, ping, beacon y cspreport son el conjunto que se puede especificar de forma segura. Los tres últimos son tráfico de seguimiento de tipo baliza que la página nunca vuelve a leer.
Especifique únicamente los tipos que el rastreo no lee. Obtener menos recursos de los que la página necesita para mostrarse reduce tanto el tiempo que tarda el rastreo como el volumen de datos transferidos.
Advertencia
No especifique document. Se bloquearía la obtención de la propia página y el rastreo no podría llevarse a cabo, por lo que se ignora y se emite una advertencia.
Nota
También se emite una advertencia al especificar un tipo que no figura en la lista anterior. Un error tipográfico en plural como images no coincide con ninguna solicitud, por lo que no bloquea nada. Además, la lista anterior es la unión de los tipos que informan los tres motores de navegador, por lo que hay tipos que el navegador utilizado nunca informa: texttrack solo lo informa Chromium, y WebKit no informa ni media ni manifest. Especificar un tipo que no se informa simplemente no bloquea nada.
Nota
Bloquear script o xhr impide que JavaScript renderice la página, lo que anula el propósito de usar Playwright. Resulta útil en un rastreo dirigido únicamente a páginas renderizadas en el servidor, pero normalmente debe elegir entre los tipos que se pueden especificar de forma segura indicados anteriormente.
Cambios en 15.8
Al actualizar desde la versión 15.7 o anterior, el comportamiento del rastreador Playwright ha cambiado de la siguiente manera.
User Agent: el User Agent de la configuración de rastreo ahora se envía realmente desde el navegador. En 15.7 y versiones anteriores se enviaba el valor predeterminado del navegador
HeadlessChrome/.... En los sitios que varían su respuesta según el User Agent, el contenido obtenido puede cambiar.Encabezados de solicitud: los encabezados de solicitud de la configuración de rastreo ahora se aplican al navegador. Cuando el mismo nombre de encabezado aparece más de una vez, los valores se combinan en un único valor separado por comas.
Descargas a través de una redirección: la URL registrada ahora es el destino de la redirección (la URL que devolvió realmente el archivo). Si el destino de la redirección es una URL fuera del alcance del rastreo, se excluye por estar fuera de alcance.
Espera de ``renderedState``: que la espera agote su tiempo límite ya no se considera un fallo; se utiliza tal cual el contenido que se hubiera cargado en ese momento. También se pueden indexar las páginas que nunca alcanzan
NETWORKIDLE.Especificación de los tiempos de espera: se han añadido
client.navigationTimeoutyclient.renderedStateTimeout, que limitan el tiempo de carga de la página completa.client.connectionTimeoutyclient.soTimeoutson tiempos de espera por socket y no se aplican al navegador.
Información de Referencia
Configuración del Rastreador: Rastreo Web, de Servidores de Archivos y de Bases de Datos - Configuración básica del rastreador
Configuración de Imágenes en Miniatura - Configuración de miniaturas
Configuración de Memoria - Configuración de memoria
Configuración de Registro - Configuración de registros
Configuración de Búsqueda Avanzada - Configuración avanzada de búsqueda