Tabellendaten mit der Dataverse Suche durchsuchen

Dataverse liefert schnelle und umfassende Suchergebnisse für mehrere Tabellen in einer Liste, sortiert nach Relevanz. Die Dataverse Suche muss in Ihrer Zielumgebung durch einen Administrator aktiviert werden, bevor Sie die Funktion verwenden können. Weitere Informationen: Suche nach Datensätzen mithilfe der Dataverse-Suche

Um mit der Verwendung der Dataverse Suche zu beginnen, gibt Ihre Anwendung einfach eine HTTP-POST-Anfrage aus (derzeit nur Web-API), um eine Dataverse Suche zu starten. Geben Sie beim Suchen von Daten optionale Abfrageparameter an, um Kriterien für das Durchsuchen von Umgebungsdaten festzulegen.

Es gibt drei Dataverse Suchmethoden, die in der Benutzeroberfläche der Power Apps-Webanwendung verwendet werden können:

  • Suchen: Bietet eine Seite mit Suchergebnissen.

  • Vorschläge: Liefert Vorschläge, wenn der Benutzer Text in ein Formularfeld eingibt.

  • Autocomplete: Ermöglicht die automatische Vervollständigung von Eingaben, wenn der Benutzer Text in ein Formularfeld eingibt.

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

Suche

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-Parameterwert 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:

  • Wert: Eine Liste der Tabellen. Standardmäßig werden 50 Ergebnisse zurückgegeben. Enthält Suchhervorhebungen, die Übereinstimmungen mit dem im Tag crmhit der Antwort enthaltenen Suchparameterwert anzeigen.

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

  • Facetten: Die Facettenergebnisse.

Darüber hinaus können Sie einen oder mehrere Abfrageparameter hinzufügen, um anzupassen, wie die Suche durchgeführt werden soll und welche Ergebnisse zurückgegeben werden. Die unterstützten Abfrageparameter sind im folgenden Abschnitt angegeben.

Abfrageparameter

Die folgenden Abfrageparameter werden für die Dataverse Suche 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 der Standard-OData-Syntax 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). Die Angabe des Parameters orderby setzt die Standardeinstellung außer Kraft. 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 einige oder alle Suchbegriffe übereinstimmen müssen, damit das Dokument als Übereinstimmung gezählt wird. Der Standardwert ist „any“.

Hinweis

Der searchMode-Parameter einer Abfrageanforderung 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. Die Vorgabe ist 'einfach'.

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 (\). Sie müssen die folgenden Sonderzeichen ausblenden: + – & | ! ( ) { } [ ] ^ " ~ * ? : \ /

Beispiel: Standardsuche

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 Suchparameterwert, basierend auf der Primärspalte eines Tabellendatensatzes. Dieses Verhalten unterscheidet sich von einer normalen Suchanfrage, da eine Vorschlagssuche nur die Primärspalte eines Datensatzes durchsucht, während Suchanfragen alle Dataverse-Such –-fähigen Tabellenspalten durchsuchen.

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 des Suchparameters 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 Suchparameterwert an und sind im crmhit-Tag der Antwort enthalten ist.

Darüber hinaus können Sie einen oder mehrere Abfrageparameter hinzufügen, um anzupassen, wie die Vorschlagssuche durchgeführt werden soll und welche Ergebnisse zurückgegeben werden. Die unterstützten Abfrageparameter sind im folgenden Abschnitt angegeben.

Abfrageparameter

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 kommagetrennten Bedingungen, wobei jede Bedingung 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). Die Angabe des Parameters orderby setzt die Standardeinstellung außer Kraft. 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'"
}

Beispiel: Vorschlagssuche

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 einen oder mehrere Abfrageparameter hinzufügen, um anzupassen, wie die Suche durchgeführt werden soll und welche Ergebnisse zurückgegeben werden. Die unterstützten Abfrageparameter sind im folgenden Abschnitt angegeben.

Abfrageparameter

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

Beispiel: AutoVervollständigen-Suche

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

Konfigurieren Sie die Suche in Dataverse, um Suchergebnisse und Leistung zu verbessern
Vergleich der Suchoptionen in Microsoft Dataverse
Abfrage von Daten über die Web-API
Verbinden Sie Dataverse mit Ihrer Umgebung

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