Chercher des enregistrements Dataverse
La recherche Dataverse fournit des résultats de recherche rapides et complets sur plusieurs tables, dans une seule liste et triés par pertinence. Il offre également des fonctionnalités permettant de prendre en charge les suggestions et les expériences de saisie semi-automatique dans les applications.
Notes
Cette documentation destinée aux développeurs décrira comment interagir par programmation avec les API de recherche Dataverse.
Consultez les rubriques suivantes pour plus d’informations sur l’expérience utilisateur et comment configurer la recherche Dataverse pour votre environnement :
Utilisation
Les développeurs peuvent utiliser les API de recherche de trois manières différentes :
- Le SDK Dataverse pour .NET
- Le point de terminaison d’API Web
/api/data/v9.x
- Le point de terminaison de recherche native
/api/search/v2.0/
Les opérations de recherche sont définies comme des messages Dataverse utilisant les API personnalisées. Pour les projets .NET, vous pouvez utiliser le SDK pour .NET.
Aucune classe n’est actuellement incluse dans le SDK pour utiliser ces opérations. Pour les projets .NET Framework, vous pouvez utiliser la CLI Power Platform construction du modelbuilder pac pour générer des classes *Request
et *Response
pour ces messages comme vous le feriez pour n’importe quelle action personnalisée.
Vous pouvez également utiliser les classes OrganizationRequest et OrganizationResponse.
Pour plus d’informations :
Opérations de recherche
La recherche propose trois opérations pour prendre en charge une interface utilisateur permettant de rechercher des données.
Nom du message SDK Action de l’API Web Point de terminaison de recherche 2.0 |
Description |
---|---|
searchquery Action searchquery /api/search/v2.0/query |
Renvoie une page de résultats de recherche. Voir Requête de recherche Dataverse |
searchsuggest Action searchsuggest /api/search/v2.0/suggest |
Fournir des suggestions lorsque l’utilisateur saisit du texte dans un champ de formulaire. Voir Suggestion de recherche Dataverse |
searchautocomplete Action searchautocomplete /api/search/v2.0/autocomplete |
Fournit la saisie semi-automatique de l’entrée lorsque l’utilisateur saisit du texte dans un champ de formulaire. Voir Recherche par exécution automatique Dataverse |
Il existe également deux opérations que vous pouvez utiliser pour comprendre si la recherche est activée et comment elle est configurée.
Nom du message SDK Fonction de l’API Web Point de terminaison de recherche 2.0 |
Description |
---|---|
searchstatistics Fonction searchstatistics /api/search/v2.0/statistics |
Fournit la taille de stockage de l’organisation et le nombre de documents. Voir Statistiques de recherche Dataverse |
searchstatus Fonction searchstatus /api/search/v2.0/status |
Statut de recherche d’une organisation. Voir Statut de recherche Dataverse |
Utiliser Insomnia avec la recherche Dataverse
Si vous avez utilisé Insomnia avec l’API Web Dataverse, vous savez à quel point il est utile d’essayer d’utiliser les API. Des instructions sur la configuration d’un environnement Insomnia pour l’authentification avec l’API Web Dataverse sont disponibles ici : Utiliser Insomnia avec l’API Web Dataverse
Vous pouvez utiliser les mêmes instructions avec les opérations de recherche à l’aide des fonctions et actions de l’API Web. Si vous souhaitez utiliser le point de terminaison de recherche native 2.0, modifiez ces deux variables d’environnement :
Variable | Valeur de l’API Web | Valeur de point de terminaison de recherche 2.0 |
---|---|---|
version |
9.2 |
2.0 |
webapiurl |
{{url}}/api/data/v{{version}}/ |
{{url}}/api/search/v{{version}}/ |
Détecter si la recherche est activée
La recherche Dataverse est activée par défaut pour les environnements de production, mais il s’agit d’une fonctionnalité de désinscription qui peut donc être désactivée même dans un environnement de production. Si vous utilisez un environnement autre qu’un environnement de production, un Administrateur doit l’activer. Découvrez comment activer la recherche dans le centre d’administration.
Erreur lorsque la recherche n’est pas activée
Si vous utilisez les opérations de requête, de suggestion ou de saisie semi-automatique lorsque l’environnement n’est pas activé, vous obtiendrez ces erreurs :
ErrorCode :
-2147185397
Message :Dataverse Search feature is disabled for this organization.
Vous pouvez détecter si le service de recherche est activé en vérifiant les paramètres dans la table d’organisation ou en utilisant l’opération Statut de recherche Dataverse.
Vérifier la table d’organisation
La Table d’organisation contient une seule ligne de données qui contrôle la façon dont l’organisation est configurée. La colonne booléenne IsExternalSearchIndexEnabled vous indique si la recherche est activée pour l’organisation.
Cette fonction renvoie la valeur de propriété IsExternalSearchIndexEnabled
pour l’organisation.
static bool IsExternalSearchIndexEnabled(IOrganizationService service) {
QueryExpression query = new QueryExpression("organization") {
ColumnSet = new ColumnSet("isexternalsearchindexenabled")
};
EntityCollection organizations = service.RetrieveMultiple(query);
return (bool)organizations.Entities.FirstOrDefault()["isexternalsearchindexenabled"];
}
Pour plus d’informations : Générer des requêtes avec QueryExpression
Activez les tables et les colonnes activées pour la recherche.
Les tables et colonnes activées pour la recherche sont contrôlées par les données dans Dataverse.
Activer les tables
Seules les tables dans lesquelles la propriété EntityMetadata.CanEnableSyncToExternalSearchIndex.Value et la propriété EntityMetadata.ChangeTrackingEnabled sont vraies peuvent être activées pour la recherche Dataverse. Si la valeur CanEnableSyncToExternalSearchIndex.CanBeChanged
est fausse, vous ne pouvez pas modifier la valeur. Pour plus d’informations : Propriétés gérées
Pour activer une table pour la recherche Dataverse, définissez la propriété EntityMetadata.SyncToExternalSearchIndex sur true
.
Vous pouvez vérifier les valeurs d’une table avec le SDK ou l’API Web en utilisant le nom logique de la table. Remplacez account
dans les requêtes suivantes par le nom logique de la table que vous souhaitez vérifier.
static void RetrieveSearchSettingsForTable(IOrganizationService service, string logicalName = "account") {
RetrieveMetadataChangesRequest request = new RetrieveMetadataChangesRequest() {
Query = new EntityQueryExpression() {
Properties = new MetadataPropertiesExpression(
"CanEnableSyncToExternalSearchIndex",
"SyncToExternalSearchIndex")
}
};
request.Query.Criteria.Conditions.Add(
new MetadataConditionExpression(
propertyName: "LogicalName",
conditionOperator: MetadataConditionOperator.Equals,
value: logicalName));
var response = (RetrieveMetadataChangesResponse)service.Execute(request);
EntityMetadata table = response.EntityMetadata.FirstOrDefault();
Console.WriteLine($"CanEnableSyncToExternalSearchIndex: {table.CanEnableSyncToExternalSearchIndex.Value}");
Console.WriteLine($"SyncToExternalSearchIndex: {table.SyncToExternalSearchIndex}");
}
Sortie
CanEnableSyncToExternalSearchIndex: True
SyncToExternalSearchIndex: True
Pour plus d’informations :
Pour plus d’informations :
- Sélectionner des tables pour la recherche Dataverse
- Définir des propriétés managées pour la recheche Dataverse
Activer les colonnes
Les colonnes pouvant être recherchées pour la table sont déterminées selon qu’elles sont incluses ou non dans la vue Recherche rapide pour chaque table. Vous pouvez interroger la définition de la vue dans la table View (SavedQuery) et la mettre à jour par programme.
Pour plus d’informations :
Limites de protection des services
Pour Dataverse, les limites courantes de l’API de protection des services ne seront jamais atteintes, car la recherche Dataverse applique une limite inférieure. La façon dont vous les gérez est la même.
La recherche Dataverse permet à un utilisateur d’envoyer une requête par seconde et chaque organisation est limitée à 150 requêtes par minute. Si vous dépassez cette limite, une erreur 429 Too Many Requests est renvoyée. Si une erreur 429
est renvoyée, vous devez attendre que la période définie dans la valeur Retry-After
de l’en-tête de réponse soit écoulée avant d’envoyer d’autres requêtes. La valeur représente le nombre de secondes d’attente.
Voir aussi
Requête de recherche Dataverse
Suggestion de recherche Dataverse
Recherche par exécution automatique Dataverse
Statistiques et statut de recherche Dataverse
Recherche héritée Dataverse
Configurer la recherche Dataverse pour votre environnement
Notes
Pouvez-vous nous indiquer vos préférences de langue pour la documentation ? Répondez à un court questionnaire. (veuillez noter que ce questionnaire est en anglais)
Le questionnaire vous prendra environ sept minutes. Aucune donnée personnelle n’est collectée (déclaration de confidentialité).