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