Aller au contenu principal

searchFileContent

Recherche dans le texte des fichiers joints aux enregistrements. Aucune autorisation n'est requise.

Description​

Recherche dans le texte des fichiers joints à vos enregistrements (PDF, documents, etc.). Renvoie un IFileSearchResponse avec les fichiers correspondants, chacun accompagné du fragment où la correspondance a été trouvée.

.searchFileContent(

, , , , , , ,

);

Schéma des paramètres​

Schema

query(required): string
Requête de recherche, d'au moins 3 caractères — une requête plus courte est rejetée avec 400.
exemple : "transportation"

langCode: string
Langue de la requête. Par défaut : le langCode passé à defineOneEntry ("en_US" s'il n'y en a pas). Un code que la recherche ne prend pas en charge (par exemple "xx_YY") est rejeté avec 400 "Unknown text search language".
exemple : "en_US"

extensions: string[]
Filtrer par extension de fichier, envoyées séparées par des virgules.
exemple :

[
"pdf",
"docx"
]

ownerTables: string[]
Filtrer par la section à laquelle appartient l'enregistrement rattaché, envoyées séparées par des virgules.
exemple :

[
"products",
"pages"
]

localeCodes: string[]
Filtrer par la locale du lien, pas du contenu du fichier.
exemple :

[
"en_US"
]

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

offset: number
Nombre d'enregistrements à ignorer. Par défaut : 0. offset + limit ne doit pas dépasser 200 ; une fenêtre plus grande est rejetée avec 400.
exemple : 0

limit: number
Nombre de fichiers à renvoyer. Par défaut : 10, maximum 50 ; une valeur supérieure est rejetée avec 400. offset + limit ne doit pas dépasser 200.
exemple : 10

Le SDK envoie toujours langCode : par défaut, la requête est donc recherchée dans la langue de votre application et queryLanguage.source vaut "explicit". Une requête dans une autre écriture n'est pas détectée automatiquement : une requête en cyrillique avec le en_US par défaut est tout de même recherchée comme de l'anglais. Pour laisser l'API choisir la langue d'après la requête et les réglages du projet, passez une chaîne vide comme langCode.

Avant d'afficher le résultat​

L'unité est un fichier, pas un fragment. Vous obtenez un seul snippet par fichier, même si le document correspond sur vingt pages. snippet.pageFrom indique la page où commence le fragment.

Les correspondances sont marquées par des caractères de contrôle, et non par du HTML. Dans snippet.text, chaque correspondance est encadrée par U+0002 et U+0003. Si vous insérez le texte tel quel dans votre balisage, le lecteur ne verra pas la mise en évidence : remplacez-les donc par vos propres balises. Le texte provient du fichier lui-même : échappez-le d'abord, puis ajoutez les balises :

const escapeHtml = (text) =>
text
.replaceAll('&', '&')
.replaceAll('<', '&lt;')
.replaceAll('>', '&gt;')
.replaceAll('"', '&quot;');

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

Ce que renvoie la recherche​

La recherche ne renvoie que les fichiers des enregistrements visibles, et uniquement dans les sections activées dans les réglages de votre projet. Les sections personnelles se limitent aux propres enregistrements de l'appelant, et la section des administrateurs n'est jamais renvoyée. Une réponse 403 signifie que la recherche de fichiers n'est pas incluse dans votre offre.

Exemples​

Exemple minimal​

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

Uniquement les PDF joints 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": 0,
"offset": 0,
"limit": 10,
"queryLanguage": {
"resolved": [
"english"
],
"source": "explicit",
"candidates": [
"english"
]
},
"warnings": [
"processing_disabled"
],
"items": []
}

Schéma de réponse​

Schéma : IFileSearchResponse

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

offset: number
Nombre d'enregistrements à ignorer.
exemple : 0

limit: number
Nombre maximal d'enregistrements à renvoyer.
exemple : 10

queryLanguage: IFileSearchQueryLanguage
Mode de résolution de la langue de la requête.

queryLanguage.resolved: string[]
Configurations de recherche textuelle avec lesquelles la requête a été exécutée, par exemple english.
exemple : ["english"]

queryLanguage.source: string
Comment la langue a été choisie : explicit (depuis langCode), ou script, facet, configured ou fallback lorsque langCode est vide.
exemple : "explicit"

queryLanguage.candidates: string[]
Langues prises en compte.
exemple : ["english"]

warnings: string[]
Raisons pour lesquelles le résultat peut être vide ou approximatif : processing_disabled, query_too_common, query_language_capped, semantic_unavailable, fuzzy_fallback. Vide s'il n'y en a aucune.

items: IFileSearchItem[]
Fichiers correspondant à la requête.

items.id: number
ID du fichier indexé.
exemple : 1077

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

items.extension: string
Extension du fichier.
exemple : "pdf"

items.title: string | null
Titre issu des métadonnées du document, null si le document n'en contient pas.
exemple : "Microsoft Word - COG Agenda.docx"

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 ; l'API trie par ordre décroissant.
exemple : 0.0971

items.snippet: IFileSearchSnippet | null
Le fragment correspondant.

items.owners: IFileSearchOwner[]
Enregistrements auxquels le fichier est rattaché, limités à ceux que l'appelant peut voir.

items.ownersTotal: number
Nombre d'enregistrements visibles par l'appelant qui référencent le fichier.
exemple : 2