Share via


Dataverse-Suche (Legacy)

Wichtig

Diese Dokumentation bezieht sich auf den Legacy-Dataverse-Suchendpunkt. Wir empfehlen Ihnen die Verwendung des neuesten Dataverse-Suchendpunkts. Weitere Information: Dataverse-Datensätze suchen

Um mit der Verwendung der Legacy-Dataverse-Suche (Version 1.0) zu beginnen, gibt Ihre Anwendung eine HTTP-POST-Anforderung aus, um eine Dataverse-Suche zu starten. Geben Sie beim Suchen von Daten optionale Eigenschaften in Ihrem Anforderungstext an, um Kriterien für das Durchsuchen von Umgebungsdaten festzulegen.

Die Legacy-Dataverse-Suche verfügt über drei Endpunkte, die in Power Apps (make.powerapps.com) verwendet werden können:

  • Suche: /api/search/v1.0/query bietet eine Seite mit Suchergebnissen.

  • Vorschläge: /api/search/v1.0/suggest liefert Vorschläge, wenn Benutzende Text in ein Formularfeld eingeben.

  • AutoVervollständigen: /api/search/v1.0/autocomplete ermöglicht die automatische Vervollständigung von Eingaben, wenn Benutzende Text in ein Formularfeld eingeben.

In den folgenden Abschnitten wird beschrieben, wie Sie vom Anwendungscode aus auf die zuvor genannten Funktionalitäten zugreifen können.

Das folgende Beispiel zeigt die Mindestsyntax einer HTTP-Anforderung für eine Dataverse-Suche.

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

Der search-Eigenschaftswert enthält den zu suchenden Begriff und ist auf 100 Zeichen begrenzt.

Eine erfolgreiche Suchantwort gibt einen HTTP-Status von 200 zurück und umfasst Folgendes:

  • value: eine Liste an Tabellen. Standardmäßig werden 50 Ergebnisse zurückgegeben. Diese Eigenschaft schließt auch Suchhighlights ein, die Übereinstimmungen zum search-Eigenschaftswert angeben, der im crmhit-Tag der Antwort enthalten ist.

  • totalrecordcount: Die Gesamtzahl der Ergebnisse (vom Typ „lang“). Ein Wert von −1 wird zurückgegeben, wenn returntotalrecordcount auf false (Standard) festgelegt ist.

  • facets: Die Facettenergebnisse.

Darüber hinaus können Sie der Nutzlast eine oder mehrere Eigenschaften hinzufügen, um anzupassen, wie die Suche durchgeführt werden soll und welche Ergebnisse zurückgegeben werden. Die unterstützten Eigenschaften finden Sie im folgenden Abschnitt.

Abfrageeigenschaften

Die folgenden Eigenschaften werden für die Dataverse-Suche mit dem Abfrageendpunkt unterstützt.

entities:[list<string>] (optional)

Die Standardtabellenliste durchsucht alle für die Dataverse-Suche konfigurierten Tabellen und Spalten. Der Administrator konfiguriert die Standardliste, wenn die Dataverse-Suche aktiviert ist.

facets:[list<string>] (optional)

Facetten unterstützen die Möglichkeit, Detailinformationen anzeigen zu lassen, nachdem die Datenergebnisse abgerufen wurden.

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] (optional)

Filter werden beim Durchsuchen von Daten angewendet und in einer Syntax im OData-Stil angegeben.

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 (optional)

Legen Sie True fest, um die Gesamtzahl der Datensätze zurückzugeben. Andernfalls wählen Sie False aus. Der Standardwert ist false.

skip:[int] (optional)

Gibt die Anzahl der zu überspringenden Suchergebnisse an.

top:[int] (optional)

Gibt die Anzahl der abzurufenden Suchergebnisse an. Der Standardwert ist „50“, der Maximalwert beträgt „100“.

orderby:[list<string>] (optional)

Eine Liste von durch Kommas getrennten Klauseln, wobei jede Klausel aus einem Spaltennamen gefolgt von 'asc' (aufsteigend, was die Standardeinstellung ist) oder 'desc' (absteigend) besteht. Diese Liste gibt an, wie die Ergebnisse in der Rangfolge sortiert werden sollen. Standardmäßig werden die Ergebnisse in absteigender Reihenfolge der Relevanzbewertung (@search.score) aufgelistet. Bei Ergebnissen mit identischen Bewertungen ist die Reihenfolge zufällig.

Für eine Reihe von Ergebnissen, die mehrere Tabellentypen enthalten, muss die Liste der Klauseln für orderby global anwendbar sein (z. B. modifiedon, createdon, @search.score). Beachten Sie, dass die Standardeinstellung überschrieben wird, wenn die orderby-Eigenschaft festgelegt wird. So erhalten Sie beispielsweise Ergebnisse, die (in der angegebenen Rangfolge) nach Relevanz geordnet sind, gefolgt von den zuletzt geänderten Datensätzen, die höher in der Folge aufgeführt sind:

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

Wenn die Abfrageanforderung einen Filter für einen bestimmten Tabellentyp enthält, kann orderby optional tabellenspezifische Spalten angeben.

searchmode:any | all (optional)

Gibt an, ob any oder all Suchbegriffe übereinstimmen müssen, damit das Dokument als Übereinstimmung gezählt wird. Der Standardwert ist any.

Hinweis

Die searchMode-Eigenschaft eines Abfrageanforderungstexts steuert, ob ein Begriff mit dem NOT-Operator mit anderen Begriffen in der Abfrage durch AND- oder OR verknüpft ist (vorausgesetzt, es gibt keinen +- oder |-Operator für die anderen Begriffe).

Die Verwendung von "searchMode": "any" erhöht die Auffindbarkeit von Abfragen, indem mehr Ergebnisse einbezogen werden, und wird standardmäßig als „ODER NICHT“ interpretiert. Zum Beispiel wird „wifi -luxury“ mit Dokumenten übereinstimmen, die entweder den Begriff „wifi“ enthalten oder solche, die den Begriff „luxury“ nicht enthalten.

Die Verwendung von "searchMode": "all" erhöht die Präzision von Abfragen, indem weniger Ergebnisse einbezogen werden, und wird standardmäßig als „AND NOT“ interpretiert. Zum Beispiel wird „wifi -luxury“ mit Dokumenten übereinstimmen, die den Begriff „wifi“ und nicht den Begriff „Luxus“ enthalten.

searchtype:simple | full (optional)

Der Suchtyp gibt die Syntax einer Suchabfrage an. Mit simple wird die einfache Abfragesyntax und mit full die Lucene-Abfragesyntax ausgewählt. Der Standardwert ist simple.

Die einfache Abfragesyntax unterstützt die folgenden Funktionen:

Funktionalität Beschreibung
Boolesche Operatoren AND-Operator, durch „+“ angegeben
OR-Operator, durch | angegeben
NOT-Operator, durch - angegeben
Rangfolge-Operatoren Ein Suchbegriff „hotel+(wifi | luxury)“ sucht nach Ergebnissen, die den Begriff „hotel“ und entweder „wifi“ oder „luxury“ (oder beides) enthalten.
Platzhalter Nachfolgende Platzhalter werden unterstützt. „Alp*“ sucht beispielsweise nach „alpine“.
Genaue Übereinstimmungen Eine in Anführungszeichen „“ eingeschlossene Abfrage.

Die Lucene-Abfragesyntax unterstützt die folgenden Funktionen:

Funktionalität Beschreibung
Boolesche Operatoren Bietet einen erweiterten Satz im Vergleich zur einfachen Abfragesyntax.
AND-Operator, durch AND, + angegeben
OR-Operator, durch ODER || angegeben
NOT-Operator, durch „NOT“, „!“, „–“ angegeben
Rangfolge-Operatoren Dieselbe Funktionalität wie die einfache Abfragesyntax.
Platzhalter Unterstützt neben einem nachfolgenden Platzhalter auch einen führenden Platzhalter.
Nachfolgender Platzhalter – „alp*“
Führender Platzhalter – „/.*pine/“
Fuzzysuche Unterstützt Abfragen, die um bis zu zwei Zeichen false geschrieben sind.
„Uniersty~“ gibt „University“ zurück.
„Blue~1“ liefert „glue“, „blues“
Relevanz eines Begriffs erhöhen Gewichtet bestimmte Begriffe in einer Abfrage unterschiedlich.
„Rock^2 electronic“ gibt Ergebnisse zurück, bei denen die Übereinstimmungen mit „Rock“ wichtiger sind als die mit „electronic“.
Näherungssuche Gibt Ergebnisse zurück, bei denen die Begriffe innerhalb von x Wörtern voneinander liegen, für kontextbezogenere Ergebnisse.
Beispiel: „airport hotel“~5 liefert Ergebnisse, bei denen „airport“ und „hotel“ innerhalb von fünf Wörtern liegen, und erhöht so die Chancen, ein Hotel in der Nähe eines Flughafens zu finden.
Suche nach regulären Ausdrücken (regex) Zum Beispiel: /[mh]otel/ passt auf „motel“ oder „hotel“.

Hinweis

Platzhalter werden nur für die Wortvervollständigung in der Dataverse Suche verwendet. In der Regel dauert das Abfragen mit einem führenden Platzhalter erheblich länger als das Nicht-Verwenden eines Platzhalters. Wir empfehlen Ihnen daher, nach alternativen Möglichkeiten zu suchen, um das zu finden, wonach Sie suchen, und führende Platzhalter nur sparsam zu verwenden, wenn überhaupt.

Um einen der Suchoperatoren als Teil des Suchtextes zu verwenden, maskieren Sie das Zeichen, indem Sie ihm einen einzelnen Backslash voranstellen (\). Zu den Sonderzeichen, für die eine Maskierung erforderlich ist, gehören: + - & | ! ( ) { } [ ] ^ " ~ * ? : \ /

Das folgende Beispiel ist eine einfache Suchanfrage und -antwort.

Anforderung:

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"]
}

Antwort:

{
    "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": "16ffc791-d06d-4d8c-84ad-89a8978e14f3",
            "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
}

Vorschläge

Vorschläge enthalten eine Liste von Übereinstimmungen mit dem angegebenen Sucheigenschaftswert, basierend auf der Primärspalte eines Tabellendatensatzes. Dies unterscheidet sich von einer normalen Suchanfrage, da eine Vorschlagssuche nur die primäre Spalte eines Datensatzes durchsucht, während Suchanfragen alle für die Dataverse-Suche aktivierten Tabellenspalten durchsucht.

Das folgende Beispiel zeigt die Mindestsyntax einer HTTP-Anforderung für eine Vorschlagsuche.

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

Der Wert der Sucheigenschaft liefert eine Textzeichenfolge, mit der die Suche übereinstimmen soll, und hat eine Mindestlänge von drei Zeichen.

Eine erfolgreiche Suchantwort gibt einen HTTP-Status von 200 zurück und enthält „Wert“, der eine Liste ist, die aus Text oder einem Dokument besteht, wobei der Text der Vorschlag mit Hervorhebungen ist und das Dokument ein Wörterbuch <string,object> des Vorschlagsergebnisses ist. Standardmäßig werden fünf Ergebnisse zurückgegeben. Hervorgehobene Vorschläge geben Übereinstimmungen mit dem Sucheigenschaftenwert an und sind im crmhit-Tag der Antwort enthalten ist.

Darüber hinaus können Sie dem Text der Anforderung eine oder mehrere Eigenschaften hinzufügen, um anzupassen, wie die Vorschlagssuche durchgeführt werden soll und welche Ergebnisse zurückgegeben werden. Die unterstützten Eigenschaften finden Sie im folgenden Abschnitt.

Vorschlagseigenschaften

usefuzzy:true | false (optional)

Verwenden Sie die Fuzzysuche als Hilfe bei Rechtschreibfehlern. Der Standardwert ist false.

top:[int] (optional)

Die Gesamtanzahl der abzurufenden Vorschläge. Der Standard ist 5.

orderby:[List<string>] (optional)

Eine Liste von durch Kommas getrennten Klauseln, wobei jede Klausel aus einem Spaltennamen gefolgt von asc (aufsteigend) oder desc (absteigend) besteht. Diese Liste gibt an, wie die Ergebnisse in der Rangfolge sortiert werden sollen. Standardmäßig werden die Ergebnisse in absteigender Reihenfolge der Relevanzbewertung (@search.score) aufgelistet. Bei Ergebnissen mit identischen Bewertungen ist die Reihenfolge zufällig.

Für eine Reihe von Ergebnissen, die mehrere Tabellentypen enthalten, muss die Liste der Klauseln für orderby global anwendbar sein (z. B. modifiedon, createdon, @search.score). Beachten Sie, dass die Standardeinstellung überschrieben wird, wenn die orderby-Eigenschaft festgelegt wird. So erhalten Sie beispielsweise Ergebnisse, die (in der angegebenen Rangfolge) nach Relevanz geordnet sind, gefolgt von den zuletzt geänderten Datensätzen, die höher in der Folge aufgeführt sind:

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

Wenn die Abfrageanforderung einen Filter für einen bestimmten Tabellentyp enthält, kann orderby optional tabellenspezifische Spalten angeben.

entities:[list<string>] (optional)

Die Standardeinstellung ist die Suche in allen für die Dataverse-Suche konfigurierten Tabellen.

filter:[string] (optional)

Filter werden beim Durchsuchen von Daten angewendet und in der Standard-OData-Syntax angegeben.

Anforderung:

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'"
}

Das folgende Beispiel zeigt eine einfache Suchanfrage mit Vorschlägen.

Anforderung:

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

Antwort:

{
    "value": [
        {
            "text": "{crmhit}Mar{/crmhit}ia Sullivan",
            "document": {
                "@search.objectid": "52a33850-8f0a-eb11-a813-000d3a8ab142",
                "@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**
            }
        }
    ]
}

AutoVervollständigen

Bietet die automatische Vervollständigung von Benutzereingaben. Die automatische Vervollständigung basiert auf der Primärspalte eines Tabellendatensatzes.

Die minimale Syntax einer HTTP-Anfrage für die Dataverse-Suche sieht wie folgt aus.

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

Eine erfolgreiche Suchantwort gibt einen HTTP-Status von 200 zurück und besteht aus einem „Wert“, der eine Zeichenkette ist.

Darüber hinaus können Sie dem Anforderungstext eine oder mehrere Eigenschaften hinzufügen, um anzupassen, wie die Suche durchgeführt werden soll und welche Ergebnisse zurückgegeben werden. Die unterstützten Eigenschaften finden Sie im folgenden Abschnitt.

AutoVervollständigen-Eigenschaften

usefuzzy: true | false (optional)

Fuzzysuche als Hilfe bei Rechtschreibfehlern. Der Standardwert ist false.

entities: [list<string>] (optional)

Standardmäßig werden alle für die Dataverse-Suche konfigurierten Tabellen und Spalten durchsucht.

filter: [string] (optional)

Filter werden beim Durchsuchen von Daten angewendet und in der Standard-OData-Syntax angegeben.

Anforderung:

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'"
}

Das folgende Beispiel zeigt eine einfache Autocomplete-Anfrage.

Anforderung:

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

Antwort:

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

Siehe auch

Nach Dataverse-Datensätzen suchen
Dataverse-Suchabfrage
Dataverse-Suchvorschlag
Dataverse AutoVervollständigen-Suche
Dataverse-Suchstatistiken und -Status

Hinweis

Können Sie uns Ihre Präferenzen für die Dokumentationssprache mitteilen? Nehmen Sie an einer kurzen Umfrage teil. (Beachten Sie, dass diese Umfrage auf Englisch ist.)

Die Umfrage dauert etwa sieben Minuten. Es werden keine personenbezogenen Daten erhoben. (Datenschutzbestimmungen).