Partager via


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

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

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 :

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é).