Pular para o conteúdo principal

searchFileContent

Busca pública no conteúdo de arquivos anexados a registros.

Descrição​

Este método pesquisa dentro do texto de arquivos anexados aos seus registros - PDFs, documentos e similares - e retorna os arquivos que correspondem, cada um com o fragmento onde a correspondência foi encontrada. Ele retorna uma Promise que resolve para um objeto IFileSearchResponse.

FileUploading.searchFileContent(query, langCode, extensions, ownerTables, localeCodes, onlyTruncated, offset, limit);

Parâmetros​

query: string
Consulta de pesquisa. Pelo menos 3 caracteres - uma consulta mais curta é rejeitada com 400.
exemplo: "transporte"

langCode: string (opcional)
Idioma da consulta. Padrão: "en_US".
exemplo: "en_US"

extensions: string[] (opcional)
Filtrar por extensão de arquivo.
exemplo: ["pdf", "docx"]

ownerTables: string[] (opcional)
Filtrar pela seção à qual o registro anexado pertence.
exemplo: ["products", "pages"]

localeCodes: string[] (opcional)
Filtrar pelo local do link, não do conteúdo do arquivo.
exemplo: ["en_US"]

onlyTruncated: boolean (opcional)
Retornar apenas arquivos cujo texto extraído foi cortado no limite de tamanho.
exemplo: true

offset: number (opcional)
Parâmetro para paginação. Padrão: 0.
exemplo: 0

limit: number (opcional)
Parâmetro para paginação. Padrão: 10, máximo 50 - um valor maior é rejeitado com 400.
exemplo: 10

💡 Duas coisas a saber antes de renderizar o resultado​

A unidade é um arquivo, não um fragmento. Um snippet por arquivo, mesmo quando o documento corresponde em vinte páginas. snippet.pageFrom indica em qual página o fragmento começa.

A correspondência é marcada com caracteres de controle, não HTML. Dentro de snippet.text, cada correspondência é envolta em U+0002 e U+0003. Cole isso em sua marcação sem alterações e o leitor não verá nada - substitua-os pela sua própria marcação:

const html = item.snippet.text
.replaceAll('\u0002', '<mark>')
.replaceAll('\u0003', '</mark>');

🔒 O que a busca retorna​

Apenas arquivos de registros visíveis, e apenas nas seções habilitadas nas configurações do seu projeto. Seções pessoais são restritas aos próprios registros do chamador, e a seção de admins nunca é retornada. Um 403 com uma mensagem de tarifa significa que o recurso não está incluído no seu plano.

Exemplos​

Exemplo mínimo​

const response = await FileUploading.searchFileContent('transportation');

Apenas PDFs anexados a produtos​

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,
);

Exemplo de resposta​

{
"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 resposta​

Esquema: IFileSearchResponse

total: number
Número total de arquivos correspondentes.
exemplo: 124

offset: number
Offset em que a página começa.
exemplo: 0

limit: number
Tamanho da página.
exemplo: 10

queryLanguage: IFileSearchQueryLanguage
Como a linguagem da consulta foi resolvida: resolvida, fonte, candidatos.
exemplo: { "resolved": ["english"], "source": "explicit", "candidates": ["english"] }

warnings: string[]
Avisos sobre a busca, vazio quando não há nenhum.
exemplo: []

items: IFileSearchItem[]
Os arquivos encontrados.
exemplo: [{ "id": 1077, "extension": "pdf" }]

items[].id: number
Identificador do arquivo indexado.
exemplo: 1077

items[].storageKey: string
Chave do objeto no armazenamento; o link do arquivo é construído a partir disso.
exemplo: "files/project/file/644/product/db1918c4.pdf"

items[].extension: string
Extensão do arquivo.
exemplo: "pdf"

items[].title: string | null
Título da metadata do documento, null quando o documento não possui nenhum.
exemplo: null

items[].langCode: string | null
Idioma do conteúdo do arquivo, detectado na indexação.
exemplo: "en"

items[].pageCount: number | null
Número de páginas, para formatos paginados.
exemplo: 244

items[].rank: number
Relevância da correspondência; os resultados são ordenados por isso em ordem decrescente.
exemplo: 0.0971

items[].snippet: IFileSearchSnippet | null
O fragmento correspondente: texto mais a página em que começa.
exemplo: { "text": "Transporte Ativo", "pageFrom": 86 }

items[].owners: IFileSearchOwner[]
Registros aos quais o arquivo está anexado, uma entrada por local.
exemplo: [{ "tableName": "products", "dataId": 644 }]

items[].ownersTotal: number
Quantos registros visíveis para o chamador referenciam o arquivo.
exemplo: 2