API de SearchLog

Vision General

La API de SearchLog es para obtener y gestionar registros de busqueda de Fess. Se puede utilizar para analizar el comportamiento de busqueda del usuario y mejorar la calidad de busqueda.

URL Base

/api/admin/searchlog

Lista de Endpoints

Metodo Ruta Descripcion
GET / Obtener lista de registros de busqueda
GET /{id} Obtener detalle del registro de busqueda
DELETE /{id} Eliminar registro de busqueda
DELETE /delete-all Eliminar registros de busqueda en masa
GET /stats Obtener estadisticas de busqueda

Obtener Lista de Registros de Busqueda

Solicitud

GET /api/admin/searchlog

Parametros

Respuesta

{
  "response": {
    "status": 0,
    "logs": [
      {
        "id": "searchlog_id_1",
        "searchWord": "Fess instalacion",
        "requestedAt": "2025-01-29T10:00:00Z",
        "responseTime": 125,
        "hitCount": 234,
        "queryOffset": 0,
        "queryPageSize": 10,
        "user": "user001",
        "userSessionId": "session_abc123",
        "clientIp": "192.168.1.100",
        "referer": "https://example.com/",
        "userAgent": "Mozilla/5.0 ...",
        "roles": ["user", "admin"],
        "languages": ["ja"]
      },
      {
        "id": "searchlog_id_2",
        "searchWord": "configuracion busqueda",
        "requestedAt": "2025-01-29T09:55:00Z",
        "responseTime": 98,
        "hitCount": 567,
        "queryOffset": 0,
        "queryPageSize": 10,
        "user": "user002",
        "userSessionId": "session_def456",
        "clientIp": "192.168.1.101",
        "referer": "",
        "userAgent": "Mozilla/5.0 ...",
        "roles": ["user"],
        "languages": ["ja", "en"]
      }
    ],
    "total": 10000
  }
}

Campos de Respuesta

Campo Descripcion
id ID del registro de busqueda
searchWord Palabra clave de busqueda
requestedAt Fecha/hora de busqueda
responseTime Tiempo de respuesta (milisegundos)
hitCount Numero de resultados
queryOffset Desplazamiento de resultados
queryPageSize Tamano de pagina
user ID de usuario
userSessionId ID de sesion
clientIp Direccion IP del cliente
referer Referencia
userAgent Agente de usuario
roles Roles de usuario
languages Idiomas de busqueda

Obtener Detalle del Registro de Busqueda

Solicitud

GET /api/admin/searchlog/{id}

Respuesta

{
  "response": {
    "status": 0,
    "log": {
      "id": "searchlog_id_1",
      "searchWord": "Fess instalacion",
      "requestedAt": "2025-01-29T10:00:00Z",
      "responseTime": 125,
      "hitCount": 234,
      "queryOffset": 0,
      "queryPageSize": 10,
      "user": "user001",
      "userSessionId": "session_abc123",
      "clientIp": "192.168.1.100",
      "referer": "https://example.com/",
      "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36",
      "roles": ["user", "admin"],
      "languages": ["ja"],
      "clickLogs": [
        {
          "url": "https://fess.codelibs.org/install.html",
          "docId": "doc_123",
          "order": 1,
          "clickedAt": "2025-01-29T10:00:15Z"
        }
      ]
    }
  }
}

Eliminar Registro de Busqueda

Solicitud

DELETE /api/admin/searchlog/{id}

Respuesta

{
  "response": {
    "status": 0,
    "message": "Search log deleted successfully"
  }
}

Eliminar Registros de Busqueda en Masa

Solicitud

DELETE /api/admin/searchlog/delete-all

Parametros

Respuesta

{
  "response": {
    "status": 0,
    "message": "Search logs deleted successfully",
    "deletedCount": 5000
  }
}

Obtener Estadisticas de Busqueda

Solicitud

GET /api/admin/searchlog/stats

Parametros

Respuesta

{
  "response": {
    "status": 0,
    "stats": {
      "totalSearches": 50000,
      "uniqueUsers": 1234,
      "averageResponseTime": 156,
      "averageHitCount": 345,
      "zeroHitRate": 0.05,
      "topSearchWords": [
        {"word": "Fess", "count": 1500},
        {"word": "instalacion", "count": 800},
        {"word": "configuracion", "count": 650}
      ],
      "searchesByDate": [
        {"date": "2025-01-29", "count": 2500},
        {"date": "2025-01-28", "count": 2300},
        {"date": "2025-01-27", "count": 2100}
      ]
    }
  }
}

Ejemplos de Uso

Obtener Lista de Registros de Busqueda

curl -X GET "http://localhost:8080/api/admin/searchlog?size=100&page=0" \
     -H "Authorization: Bearer YOUR_TOKEN"

Obtener por Periodo Especifico

curl -X GET "http://localhost:8080/api/admin/searchlog?from=2025-01-01T00:00:00Z&to=2025-01-31T23:59:59Z" \
     -H "Authorization: Bearer YOUR_TOKEN"

Registros de Busqueda de un Usuario Especifico

curl -X GET "http://localhost:8080/api/admin/searchlog?user=user001" \
     -H "Authorization: Bearer YOUR_TOKEN"

Registros de Busqueda de una Palabra Clave Especifica

curl -X GET "http://localhost:8080/api/admin/searchlog?query=Fess" \
     -H "Authorization: Bearer YOUR_TOKEN"

Obtener Estadisticas de Busqueda

curl -X GET "http://localhost:8080/api/admin/searchlog/stats?from=2025-01-01&to=2025-01-31&interval=day" \
     -H "Authorization: Bearer YOUR_TOKEN"

Eliminar Registros de Busqueda Antiguos

# Eliminar registros anteriores a 30 dias
curl -X DELETE "http://localhost:8080/api/admin/searchlog/delete-all?before=2024-12-30T00:00:00Z" \
     -H "Authorization: Bearer YOUR_TOKEN"

Extraer Palabras Clave Populares de Busqueda

curl -X GET "http://localhost:8080/api/admin/searchlog/stats?from=2025-01-01&to=2025-01-31" \
     -H "Authorization: Bearer YOUR_TOKEN" | \
     jq '.response.stats.topSearchWords'

Analisis de Calidad de Busqueda

# Verificar la tasa de cero resultados
curl -X GET "http://localhost:8080/api/admin/searchlog/stats" \
     -H "Authorization: Bearer YOUR_TOKEN" | \
     jq '{zeroHitRate: .response.stats.zeroHitRate, averageHitCount: .response.stats.averageHitCount}'

Tendencia de Busquedas por Dia

curl -X GET "http://localhost:8080/api/admin/searchlog/stats?interval=day&from=2025-01-01&to=2025-01-31" \
     -H "Authorization: Bearer YOUR_TOKEN" | \
     jq '.response.stats.searchesByDate'

Informacion de Referencia