searchFileContent
Búsqueda pública en el contenido de archivos adjuntos a registros.
Descripción
Este método busca dentro del texto de archivos adjuntos a tus registros - PDFs, documentos y similares - y devuelve los archivos que coinciden, cada uno con el fragmento donde se encontró la coincidencia. Devuelve una Promesa que se resuelve en un objeto IFileSearchResponse.
FileUploading.searchFileContent(query, langCode, extensions, ownerTables, localeCodes, onlyTruncated, offset, limit);
Parámetros
query: string
Consulta de búsqueda. Al menos 3 caracteres - una más corta es rechazada con 400.
ejemplo: "transportation"
langCode: string (opcional)
Idioma de la consulta. Predeterminado: "en_US".
ejemplo: "en_US"
extensions: string[] (opcional)
Filtrar por extensión de archivo.
ejemplo: ["pdf", "docx"]
ownerTables: string[] (opcional)
Filtrar por la sección a la que pertenece el registro adjunto.
ejemplo: ["products", "pages"]
localeCodes: string[] (opcional)
Filtrar por la configuración regional del enlace, no del contenido del archivo.
ejemplo: ["en_US"]
onlyTruncated: boolean (opcional)
Devolver solo archivos cuyo texto extraído fue cortado en el límite de tamaño.
ejemplo: true
offset: number (opcional)
Parámetro para paginación. Predeterminado: 0.
ejemplo: 0
limit: number (opcional)
Parámetro para paginación. Predeterminado: 10, máximo 50 - un valor mayor es rechazado con 400.
ejemplo: 10
💡 Dos cosas que saber antes de renderizar el resultado
La unidad es un archivo, no un fragmento. Un snippet por archivo, incluso cuando el documento coincide en veinte páginas. snippet.pageFrom indica en qué página comienza el fragmento.
La coincidencia está marcada con caracteres de control, no HTML. Dentro de snippet.text cada coincidencia está envuelta en U+0002 y U+0003. Pégalo en tu marcado sin cambios y el lector no verá nada - reemplázalos con tu propio resaltado:
const html = item.snippet.text
.replaceAll('\u0002', '<mark>')
.replaceAll('\u0003', '</mark>');
🔒 Lo que devuelve la búsqueda
Solo archivos de registros visibles, y solo en las secciones habilitadas en la configuración de tu proyecto. Las secciones personales se limitan a los propios registros del llamador, y la sección de administradores nunca se devuelve. Un 403 con un mensaje de tarifa significa que la función no está incluida en tu plan.
Ejemplos
Ejemplo mínimo
const response = await FileUploading.searchFileContent('transportation');
Solo PDFs adjuntos a productos
const response = await FileUploading.searchFileContent(
'transportation',
'en_US',
['pdf'],
['products'],
);
Segunda página
const response = await FileUploading.searchFileContent(
'transportation',
'en_US',
undefined,
undefined,
undefined,
undefined,
10,
10,
);
Ejemplo de respuesta
{
"total": 124,
"offset": 0,
"limit": 10,
"queryLanguage": {
"resolved": ["english"],
"source": "explicit",
"candidates": ["english"]
},
"warnings": [],
"items": [
{
"id": 1077,
"storageKey": "files/project/file/644/product/db1918c4.pdf",
"extension": "pdf",
"title": null,
"langCode": "en",
"pageCount": 244,
"rank": 0.0971,
"snippet": {
"text": "Active Transportation Demand Management",
"pageFrom": 86
},
"owners": [
{
"tableName": "products",
"dataId": 644,
"title": "COG - March 17, 2016",
"langCode": "en_US"
}
],
"ownersTotal": 2
}
]
}
Esquema de respuesta
Esquema: IFileSearchResponse
total: number
Número total de archivos coincidentes.
ejemplo: 124
offset: number
Desplazamiento en el que comienza la página.
ejemplo: 0
limit: number
Tamaño de la página.
ejemplo: 10
queryLanguage: IFileSearchQueryLanguage
Cómo se resolvió el idioma de la consulta: resuelto, fuente, candidatos.
ejemplo: { "resolved": ["english"], "source": "explicit", "candidates": ["english"] }
warnings: string[]
Advertencias sobre la búsqueda, vacío cuando no hay ninguna.
ejemplo: []
items: IFileSearchItem[]
Los archivos encontrados.
ejemplo: [{ "id": 1077, "extension": "pdf" }]
items[].id: number
Identificador del archivo indexado.
ejemplo: 1077
items[].storageKey: string
Clave del objeto en el almacenamiento; el enlace del archivo se construye a partir de ella.
ejemplo: "files/project/file/644/product/db1918c4.pdf"
items[].extension: string
Extensión del archivo.
ejemplo: "pdf"
items[].title: string | null
Título de los metadatos del documento, null cuando el documento no tiene ninguno.
ejemplo: null
items[].langCode: string | null
Idioma del contenido del archivo, detectado al indexar.
ejemplo: "en"
items[].pageCount: number | null
Número de páginas, para formatos paginados.
ejemplo: 244
items[].rank: number
Relevancia de la coincidencia; los resultados se ordenan por ella en orden descendente.
ejemplo: 0.0971
items[].snippet: IFileSearchSnippet | null
El fragmento coincidente: texto más la página en la que comienza.
ejemplo: { "text": "Active Transportation", "pageFrom": 86 }
items[].owners: IFileSearchOwner[]
Registros a los que está adjunto el archivo, una entrada por configuración regional.
ejemplo: [{ "tableName": "products", "dataId": 644 }]
items[].ownersTotal: number
Cuántos registros visibles para el llamador hacen referencia al archivo.
ejemplo: 2