Saltar al contenido principal

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