Partager via


Recherche Dataverse (ancienne)

Important

Cette documentation concerne l'ancien point de terminaison de recherche Dataverse. Nous vous recommandons d’utiliser le dernier point de terminaison de recherche Dataverse. Plus d’informations : Rechercher des enregistrements Dataverse

Pour commencer à utiliser la recherche Dataverse héritée (version 1.0), votre application émet une requête HTTP POST pour démarrer une recherche Dataverse. Lors de la recherche de données, spécifiez des propriétés facultatives dans le corps de la demande pour définir des critères pour la façon dont les données d’environnement doivent être recherchées.

La recherche Dataverse héritée comporte trois points de terminaison qui peuvent être utilisés dans Power Apps (make.powerapps.com) :

  • Recherche : /api/search/v1.0/query fournit une page de résultats de recherche.

  • Suggestions : /api/search/v1.0/suggest fournit des suggestions lorsque l’utilisateur entre du texte dans un champ de formulaire.

  • Saisie semi-automatique : /api/search/v1.0/autocomplete Elle fournit la saisie semi-automatique lorsque l’utilisateur entre du texte dans un champ de saisie.

Les sections suivantes décrivent comment accéder aux fonctionnalités de recherche mentionnées précédemment à partir du code d’application.

L’exemple suivant montre la syntaxe minimale d’une requête HTTP de recherche Dataverse.

POST [Organization URI]/api/search/v1.0/query
{  
  "search": "<search term>"
}

La search valeur de propriété contient le terme à rechercher et a une limite de 100 caractères.

Une réponse de recherche réussie retourne un état HTTP de 200 et se compose des éléments suivants :

  • value: une liste de tables. Par défaut, 50 résultats sont retournés. Cette propriété inclut également les points clés de la recherche, qui indiquent des correspondances avec la valeur de propriété search contenue dans la balise crmhit de la réponse.

  • totalrecordcount: nombre total de résultats (de type long). Une valeur de −1 est retournée si returntotalrecordcount est défini sur false (valeur par défaut).

  • facets : les résultats de facette.

En outre, vous pouvez ajouter une ou plusieurs propriétés à la charge utile pour personnaliser la façon dont la recherche doit être effectuée et quels résultats sont retournés. Les propriétés prises en charge sont indiquées dans la section suivante.

Propriétés de requête

Les propriétés suivantes sont prises en charge pour la recherche dans Dataverse via le point de terminaison de requête.

entities:[list<string>] (facultatif)

La liste de tables par défaut effectue des recherches dans toutes les tables et colonnes configurées par la recherche Dataverse. L’administrateur configure la liste par défaut lorsque la recherche Dataverse est activée.

facets:[list<string>] (facultatif)

Les facettes prennent en charge la capacité d’explorer les résultats des données après leur extraction.

POST [Organization URI]/api/search/v1.0/query
{  
  "search": "maria",

  "facets": ["@search.entityname,count:100",  
    "account.primarycontactid,count:100",  
    "ownerid,count:100",  
    "modifiedon,values:2019-04-27T00:00:00|2020-03-27T00:00:00|2020-04-20T00:00:00|2020-04-27T00:00:00",
    "createdon,values:2019-04-27T00:00:00|2020-03-27T00:00:00|2020-04-20T00:00:00|2020-04-27T00:00:00"]
}

filter:[string] (facultatif)

Les filtres sont appliqués lors de la recherche de données et sont spécifiés dans une syntaxe de style OData.

POST [Organization URI]/api/search/v1.0/query
{  
  "search": "maria",

  "filter": "account:modifiedon ge 2020-04-27T00:00:00,
    activities: regardingobjecttypecode eq 'account', annotation:objecttypecode eq 'account',
    incident: (prioritycode eq 1 or prioritycode eq 2)"
}

returntotalrecordcount: true | false (facultatif)

Spécifiez true pour retourner le nombre total d’enregistrements ; sinon false. La valeur par défaut est false.

skip:[int] (facultatif)

Spécifie le nombre de résultats de recherche à ignorer.

top:[int] (facultatif)

Spécifie le nombre de résultats de recherche à récupérer. La valeur par défaut est 50 et la valeur maximale est 100.

orderby:[list<string>] (facultatif)

Liste de clauses séparées par des virgules où chaque clause se compose d’un nom de colonne suivi de « asc » (croissant, qui est la valeur par défaut) ou « desc » (décroissant). Cette liste spécifie comment classer les résultats dans l’ordre de priorité. Par défaut, les résultats sont répertoriés dans l’ordre décroissant du score de pertinence (@search.score). Pour les résultats avec des scores identiques, le classement sera aléatoire.

Pour un ensemble de résultats qui contiennent plusieurs types de tables, la liste des clauses pour orderby doit être globalement applicable (par exemple, modifiedon, createdon, @search.score). Notez que la spécification de la orderby propriété remplace la valeur par défaut. Par exemple, pour classer les résultats (par ordre de priorité) par pertinence, suivis des enregistrements les plus récemment modifiés répertoriés le plus haut :

"orderby": ["@search.score desc", "modifiedon desc"]

Si la demande de requête inclut un filtre pour un type de table spécifique, orderby peut éventuellement spécifier des colonnes spécifiques à la table.

searchmode:any | all (facultatif)

Spécifie si les termes de recherche any ou all doivent être mis en correspondance pour que le document soit compté comme une correspondance. La valeur par défaut est any.

Note

La propriété searchMode dans le corps d'une requête contrôle si un terme avec l'opérateur NOT est combiné par ET ou OU avec d'autres termes dans la requête (à condition qu'il n'y ait pas l'opérateur + ou | sur les autres termes).

L’utilisation "searchMode": "any" augmente le rappel des requêtes en incluant plus de résultats, et par défaut sera interprétée comme « OR NOT ». Par exemple, « wifi -luxe » correspond aux documents qui contiennent le terme « wifi » ou ceux qui ne contiennent pas le terme « luxe ».

L’utilisation "searchMode": "all" augmente la précision des requêtes en incluant moins de résultats, et par défaut sera interprétée comme « AND NOT ». Par exemple, « wifi -luxury » correspond aux documents qui contiennent le terme « wifi » et ne contiennent pas le terme « luxe ».

searchtype:simple | full (facultatif)

Le type de recherche spécifie la syntaxe d’une requête de recherche. L’utilisation simple sélectionne une syntaxe de requête simple et full sélectionne la syntaxe de requête Lucene. La valeur par défaut est simple.

La syntaxe de requête simple prend en charge les fonctionnalités suivantes :

Fonctionnalités Description
Opérateurs booléens Opérateur AND ; indiqué par +
Opérateur OU ; désigné par |
Opérateur NON ; désigné par -
Opérateurs de priorité Un terme de recherche " hotel+(wifi | luxe) » recherche les résultats contenant le terme « hôtel » et « wifi » ou « luxe » (ou les deux).
Caractères génériques Les caractères génériques de fin sont pris en charge. Par exemple, « Alp* » recherche « alpine ».
Concordances exactes Requête entre guillemets « ».

La syntaxe de requête Lucene prend en charge les fonctionnalités suivantes :

Fonctionnalités Description
Opérateurs booléens Fournit un ensemble étendu par rapport à une syntaxe de requête simple.
Opérateur AND ; indiqué par AND, +
Opérateur OR ; désigné par OR, ||
Opérateur NON ; désigné par NOT, !, –
Opérateurs de priorité La même fonctionnalité que la syntaxe de requête simple.
Caractères génériques En plus d’un caractère générique de fin, prend également en charge un caractère générique de début.
Caractère générique de fin - « alp* »
Caractère générique de début - « /.*pine/ »
Recherche floue Prend en charge les requêtes mal orthographiées jusqu’à 2 caractères.
« Uniersty~ » retourne « Université »
« Blue~1 » retourne « glue », « blues »
Mise en avant des termes Pondère différemment certains termes d’une requête.
« Rock^2 electronic » retourne les résultats où les correspondances à « rock » sont plus importantes que les correspondances à « electronic ».
Recherche par proximité Renvoie les résultats où les termes sont à moins de X mots les uns des autres, pour des résultats plus contextuels.
Par exemple, « hôtel près de l'aéroport »~5 renvoie des résultats où « aéroport » et « hôtel » se trouvent à cinq mots l'un de l'autre, augmentant ainsi les chances de trouver un hôtel situé à proximité d’un aéroport.
Recherche par expression régulière (regex) Par exemple, /[mh]otel/ correspond à « motel » ou « hôtel ».

Note

Les caractères génériques sont utilisés uniquement pour la complétion de mots dans la recherche de Dataverse. En règle générale, l’interrogation avec un caractère générique de premier plan prendra beaucoup plus de temps que sans caractère générique, nous vous encourageons donc à explorer d’autres moyens de trouver ce que vous recherchez et à utiliser les caractères génériques principaux avec parcimonie, voire pas du tout.

Pour utiliser l’un des opérateurs de recherche dans le texte de recherche, masquez le caractère en le préfixant avec une barre oblique inverse (\). Les caractères spéciaux qui nécessitent un échappement sont les suivants : + - & | ! ( ) { } [ ] ^ " ~ * ? : \ /

L’exemple suivant est une demande de recherche et une réponse de base.

Requête :

POST [Organization URI]/api/search/v1.0/query
{  
  "search": "maria",

  "facets": ["@search.entityname,count:100",  
    "account.primarycontactid,count:100",  
    "ownerid,count:100",  
    "modifiedon,values:2019-04-27T00:00:00|2020-03-27T00:00:00|2020-04-20T00:00:00|2020-04-27T00:00:00",
    "createdon,values:2019-04-27T00:00:00|2020-03-27T00:00:00|2020-04-20T00:00:00|2020-04-27T00:00:00"]
}

Réponse:

{
    "value": [
        {
            "@search.score": 0.4547767,
            "@search.highlights": {
                "emailaddress1": [
                    "{crmhit}maria{/crmhit}@contoso.com"
                ],
                "firstname": [
                    "{crmhit}Maria{/crmhit}"
                ],
                "fullname": [
                    "{crmhit}Maria{/crmhit} Sullivan"
                ]
            },
            "@search.entityname": "contact",
            "@search.objectid": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb",
            "ownerid": "bb2500d1-5e6d-4953-8389-bfedf57e3857",
            "owneridname": "Corey Gray",
            "@search.ownerid.logicalname": "systemuser",
            "@search.objecttypecode": 2,
            "fullname": "Maria Sullivan",
            "entityimage_url": **null**,
            "createdon": "10/9/2020 5:27 PM",
            "modifiedon": "10/9/2020 5:27 PM",
            "emailaddress1": "maria@contoso.com",
            "address1_city": **"Seattle"**,
            "address1_telephone1": **"206-400-0200"**,
            "parentcustomerid": **null**,
            "parentcustomeridname": **null**,
            "telephone1": **"206-400-0300"**
        }
    ],
    "facets": {
        "account.primarycontactid": [],
        "ownerid": [
            {
                "Type": "Value",
                "Value": "31ca7d4b-701c-4ea9-8714-a89a5172106e",
                "OptionalValue": "Corey Gray",
                "Count": 1
            }
        ],
        "@search.entityname": [
            {
                "Type": "Value",
                "Value": "contact",
                "Count": 1
            }
        ],
        "modifiedon": [
            {
                "Type": "Range",
                "To": "4/27/2019 12:00 AM",
                "Count": 0
            },
            {
                "Type": "Range",
                "From": "4/27/2019 12:00 AM",
                "To": "3/27/2020 12:00 AM",
                "Count": 0
            },
            {
                "Type": "Range",
                "From": "3/27/2020 12:00 AM",
                "To": "4/20/2020 12:00 AM",
                "Count": 0
            },
            {
                "Type": "Range",
                "From": "4/20/2020 12:00 AM",
                "To": "4/27/2020 12:00 AM",
                "Count": 0
            },
            {
                "Type": "Range",
                "From": "4/27/2020 12:00 AM",
                "Count": 1
            }
        ],
        "createdon": [
            {
                "Type": "Range",
                "To": "4/27/2019 12:00 AM",
                "Count": 0
            },
            {
                "Type": "Range",
                "From": "4/27/2019 12:00 AM",
                "To": "3/27/2020 12:00 AM",
                "Count": 0
            },
            {
                "Type": "Range",
                "From": "3/27/2020 12:00 AM",
                "To": "4/20/2020 12:00 AM",
                "Count": 0
            },
            {
                "Type": "Range",
                "From": "4/20/2020 12:00 AM",
                "To": "4/27/2020 12:00 AM",
                "Count": 0
            },
            {
                "Type": "Range",
                "From": "4/27/2020 12:00 AM",
                "Count": 1
            }
        ]
    },
    "totalrecordcount": -1
}

Suggestions

Les suggestions fournissent une liste de correspondances à la valeur de propriété de recherche spécifiée, en fonction de la colonne principale d’un enregistrement de table. Cela est différent d’une demande de recherche régulière, car une recherche de suggestion effectue uniquement une recherche dans la colonne principale d’un enregistrement, tandis que les demandes de recherche recherchent dans toutes les colonnes de table compatibles avec la recherche Dataverse.

L’exemple suivant montre la syntaxe minimale d’une requête HTTP de recherche de suggestion.

POST [Organization URI]/api/search/v1.0/suggest
{
  "search": "<text-fragment>"
}

La valeur de la propriété de recherche fournit une chaîne de caractères avec laquelle la recherche doit correspondre et a une longueur minimale de trois caractères.

Une réponse de recherche réussie retourne un état HTTP de 200 et contient « value », qui est une liste composée soit de texte, soit d’un document : le texte est la suggestion mise en surbrillance et le document est un dictionnaire de la forme <string, object> du résultat de la suggestion. Par défaut, cinq résultats sont retournés. Les points clés de suggestion indiquent des correspondances avec la valeur de la propriété de recherche et sont contenus dans la balise crmhit de la réponse.

En outre, vous pouvez ajouter une ou plusieurs propriétés au corps de la requête pour personnaliser la façon dont la recherche de suggestions doit être effectuée et quels résultats sont retournés. Les propriétés prises en charge sont indiquées dans la section suivante.

Suggérer des propriétés

usefuzzy:true | false (facultatif)

Utilisez la recherche approximative pour ne pas être embêté par les fautes d’orthographe. La valeur par défaut est false.

top:[int] (facultatif)

Nombre de suggestions à récupérer. La valeur par défaut est 5.

orderby:[List<string>] (facultatif)

Liste de clauses séparées par des virgules, où chaque clause se compose d’un nom de colonne suivi de asc (croissant) ou de desc (décroissant). Cette liste spécifie comment classer les résultats dans l’ordre de priorité. Par défaut, les résultats sont répertoriés dans l’ordre décroissant du score de pertinence (@search.score). Pour les résultats avec des scores identiques, l’ordre sera aléatoire.

Pour un ensemble de résultats qui contiennent plusieurs types de tables, la liste des clauses pour orderby doit être globalement applicable (par exemple, modifiedon, createdon, @search.score). Notez que la spécification de la orderby propriété remplace la valeur par défaut. Par exemple, pour classer les résultats (par ordre de priorité) par pertinence, suivis des enregistrements les plus récemment modifiés répertoriés le plus haut :

"orderby": ["@search.score desc", "modifiedon desc"]

Si la demande de requête inclut un filtre pour un type de table spécifique, orderby peut éventuellement spécifier des colonnes spécifiques à la table.

entities:[list<string>] (facultatif)

La valeur par défaut consiste à effectuer une recherche dans toutes les tables configurées par la recherche Dataverse.

filter:[string] (facultatif)

Les filtres sont appliqués lors de la recherche de données et sont spécifiés dans la syntaxe OData standard.

Requête :

POST [Organization URI]/api/search/v1.0/suggest
{  
  "search": "mar",

  "filter": "account:modifiedon ge 2020-04-27T00:00:00,
    activities:regardingobjecttypecode eq 'account', annotation:objecttypecode eq 'account'"
}

L’exemple suivant montre une demande de recherche de suggestion de base.

Requête :

POST [Organization URI]/api/search/v1.0/suggest
{  
  "search": "mar"
}

Réponse:

{
    "value": [
        {
            "text": "{crmhit}Mar{/crmhit}ia Sullivan",
            "document": {
                "@search.objectid": "bbbbbbbb-1111-2222-3333-cccccccccccc",
                "@search.entityname": "contact",
                "@search.objecttypecode": 2,
                "fullname": "Maria Sullivan",
                "entityimage_url": **null**,
                "emailaddress1": "maria@contoso.com",
                "address1_city": **null**,
                "address1_telephone1": **null**,
                "parentcustomerid": **null**,
                "parentcustomeridname": **null**,
                "telephone1": **null**
            }
        }
    ]
}

Autocomplétion

Fournit la complétion automatique de la saisie utilisateur. La saisie semi-automatique est basée sur la colonne principale d’un enregistrement de table.

La syntaxe minimale d’une requête HTTP de recherche Dataverse est la suivante.

POST [Organization URI]/api/search/v1.0/autocomplete
{  
  "search": "<text-fragment>"
}

Une réponse de recherche réussie retourne un état HTTP de 200 et se compose de « value », qui est une chaîne.

En outre, vous pouvez ajouter une ou plusieurs propriétés au corps de la demande pour personnaliser la façon dont la recherche doit être effectuée et quels résultats sont retournés. Les propriétés prises en charge sont indiquées dans la section suivante.

Propriétés de saisie semi-automatique

usefuzzy: true | false (facultatif)

La recherche approximative élimine les fautes d’orthographe. La valeur par défaut est false.

entities: [list<string>] (facultatif)

L’étendue par défaut consiste à rechercher dans toutes les tables et colonnes configurées pour la recherche dans Dataverse.

filter: [string] (facultatif)

Les filtres sont appliqués lors de la recherche de données et sont spécifiés dans la syntaxe OData standard.

Requête :

POST [Organization URI]/api/search/v1.0/autocomplete
{  
  "search": "mar",

  "filter": "account:modifiedon ge 2020-04-27T00:00:00,
    activities:regardingobjecttypecode eq 'account', annotation:objecttypecode eq 'account'"
}

L’exemple suivant montre une requête de saisie semi-automatique de base.

Requête :

POST [Organization URI]/api/search/v1.0/autocomplete
{  
  "search": "mar"
}

Réponse:

{
  "value": "{crmhit}maria{/crmhit}"
}

Voir aussi

Chercher des enregistrements Dataverse
Requête de recherche Dataverse
Suggestion de recherche Dataverse
Recherche par exécution automatique Dataverse
Statistiques et statut de recherche Dataverse