Aller au contenu principal

searchFileContent

Recherche publique dans le contenu des fichiers attachés aux enregistrements.

Description​

Cette méthode recherche à l'intérieur du texte des fichiers attachés à vos enregistrements - PDFs, documents et similaires - et renvoie les fichiers correspondants, chacun avec le fragment où la correspondance a été trouvée. Elle renvoie une Promesse qui se résout en un objet IFileSearchResponse.

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

Paramètres​

query: string
Requête de recherche. Au moins 3 caractères - une plus courte est rejetée avec 400.
exemple : "transportation"

langCode: string (optionnel)
Langue de la requête. Par défaut : "en_US".
exemple : "en_US"

extensions: string[] (optionnel)
Filtrer par extension de fichier.
exemple : ["pdf", "docx"]

ownerTables: string[] (optionnel)
Filtrer par la section à laquelle appartient l'enregistrement attaché.
exemple : ["products", "pages"]

localeCodes: string[] (optionnel)
Filtrer par la locale du lien, pas du contenu du fichier.
exemple : ["en_US"]

onlyTruncated: boolean (optionnel)
Retourner uniquement les fichiers dont le texte extrait a été coupé à la taille maximale.
exemple : true

offset: number (optionnel)
Paramètre pour la pagination. Par défaut : 0.
exemple : 0

limit: number (optionnel)
Paramètre pour la pagination. Par défaut : 10, maximum 50 - une valeur plus grande est rejetée avec 400.
exemple : 10

💡 Deux choses à savoir avant de rendre le résultat​

L'unité est un fichier, pas un fragment. Un snippet par fichier, même lorsque le document correspond sur vingt pages. snippet.pageFrom indique sur quelle page le fragment commence.

La correspondance est marquée par des caractères de contrôle, pas par du HTML. À l'intérieur de snippet.text, chaque correspondance est entourée de U+0002 et U+0003. Collez-le dans votre balisage sans changement et le lecteur ne voit rien - remplacez-les par votre propre surlignage :

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

🔒 Ce que la recherche renvoie​

Uniquement les fichiers des enregistrements visibles, et uniquement dans les sections activées dans les paramètres de votre projet. Les sections personnelles sont limitées aux propres enregistrements de l'appelant, et la section des admins n'est jamais renvoyée. Un 403 avec un message tarifaire signifie que la fonctionnalité n'est pas incluse dans votre plan.

Exemples​

Exemple minimal​

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

Uniquement les PDFs attachés aux produits​

const response = await FileUploading.searchFileContent(
'transportation',
'en_US',
['pdf'],
['products'],
);

Deuxième page​

const response = await FileUploading.searchFileContent(
'transportation',
'en_US',
undefined,
undefined,
undefined,
undefined,
10,
10,
);

Exemple de réponse​

{
"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
}
]
}

Schéma de réponse​

Schéma : IFileSearchResponse

total: number
Nombre total de fichiers correspondants.
exemple : 124

offset: number
Décalage à partir duquel la page commence.
exemple : 0

limit: number
Taille de la page.
exemple : 10

queryLanguage: IFileSearchQueryLanguage
Comment la langue de la requête a été résolue : résolue, source, candidats.
exemple : { "resolved": ["english"], "source": "explicit", "candidates": ["english"] }

warnings: string[]
Avertissements concernant la recherche, vide lorsqu'il n'y en a pas.
exemple : []

items: IFileSearchItem[]
Les fichiers trouvés.
exemple : [{ "id": 1077, "extension": "pdf" }]

items[].id: number
Identifiant du fichier indexé.
exemple : 1077

items[].storageKey: string
Clé de l'objet dans le stockage ; le lien du fichier est construit à partir de cela.
exemple : "files/project/file/644/product/db1918c4.pdf"

items[].extension: string
Extension de fichier.
exemple : "pdf"

items[].title: string | null
Titre provenant des métadonnées du document, null lorsque le document n'en a pas.
exemple : null

items[].langCode: string | null
Langue du contenu du fichier, détectée lors de l'indexation.
exemple : "en"

items[].pageCount: number | null
Nombre de pages, pour les formats paginés.
exemple : 244

items[].rank: number
Pertinence de la correspondance ; les résultats sont triés par ordre décroissant.
exemple : 0.0971

items[].snippet: IFileSearchSnippet | null
Le fragment correspondant : texte plus la page sur laquelle il commence.
exemple : { "text": "Active Transportation", "pageFrom": 86 }

items[].owners: IFileSearchOwner[]
Enregistrements auxquels le fichier est attaché, une entrée par locale.
exemple : [{ "tableName": "products", "dataId": 644 }]

items[].ownersTotal: number
Combien d'enregistrements visibles pour l'appelant font référence au fichier.
exemple : 2