Sprache

AppSearchSession.Search(String, SearchSpec) Methode

Definition

Ruft Dokumente aus dem Geöffneten AppSearchSession ab, die einer bestimmten Abfragezeichenfolge und dem angegebenen Suchtyp entsprechen.

[Android.Runtime.Register("search", "(Ljava/lang/String;Landroid/app/appsearch/SearchSpec;)Landroid/app/appsearch/SearchResults;", "", ApiSince=31)]
public Android.App.AppSearch.SearchResults Search(string queryExpression, Android.App.AppSearch.SearchSpec searchSpec);
[<Android.Runtime.Register("search", "(Ljava/lang/String;Landroid/app/appsearch/SearchSpec;)Landroid/app/appsearch/SearchResults;", "", ApiSince=31)>]
member this.Search : string * Android.App.AppSearch.SearchSpec -> Android.App.AppSearch.SearchResults

Parameter

queryExpression
String

Abfragezeichenfolge, die durchsucht werden soll.

searchSpec
SearchSpec

Spezifikation zum Festlegen von Dokumentfiltern, Hinzufügen von Projektionen, Festlegen des Ausdrucks-Übereinstimmungstyps usw.

Gibt zurück

ein SearchResults Objekt für abgerufene übereinstimmene Dokumente.

Attribute

Hinweise

Ruft Dokumente aus dem Geöffneten AppSearchSession ab, die einer bestimmten Abfragezeichenfolge und dem angegebenen Suchtyp entsprechen.

Abfragezeichenfolgen können leer sein, einen Ausdruck ohne Operatoren enthalten oder mehrere Begriffe und Operatoren enthalten.

Für leere Abfragezeichenfolgen werden alle Dokumente zurückgegeben, die mit der SearchSpec Abfrage übereinstimmen.

Bei Abfragezeichenfolgen mit einem einzelnen Ausdruck und ohne Operatoren werden Dokumente, die der bereitgestellten Abfragezeichenfolge entsprechen, SearchSpec zurückgegeben.

Die folgenden Operatoren werden unterstützt:

<ul><li>AND (implizit)

AND ist ein Operator, der Mit Dokumenten übereinstimmt, die alle bereitgestellten Ausdrücke enthalten.

<b>HINWEIS:</b> Ein Leerzeichen zwischen Begriffen wird als "AND"-Operator behandelt. Explizites Einschließen von "AND" in eine Abfragezeichenfolge behandelt "AND" als Ausdruck und gibt Dokumente zurück, die auch "AND" enthalten.

Beispiel: "Apfel UND Banane" gleicht Dokumente ab, die die Begriffe "Apfel", "und", "Banane" enthalten.

Beispiel: "Apfelbanane" entspricht Dokumenten, die sowohl "Apfel" als auch "Banane" enthalten.

Beispiel: "Apfel banane Kirsche" entspricht Dokumenten, die "Apfel", "Banane" und "Kirsche" enthalten. <li>OR

OR ist ein Operator, der Dokumenten entspricht, die einen beliebigen angegebenen Ausdruck enthalten.

Beispiel: "Apfel ODER Banane" entspricht Dokumenten, die entweder "Apfel" oder "Banane" enthalten.

Beispiel: "Apfel ODER Banane ODER Kirsche" entspricht Dokumenten, die einen "Apfel", "Bananen" oder "Kirschen" enthalten. <li>Ausschluss (-)

Ausschluss (-) ist ein Operator, der mit Dokumenten übereinstimmt, die nicht den angegebenen Ausdruck enthalten.

Beispiel: "-apple" gleicht Dokumente ab, die nicht "Apple" enthalten. <li>Gruppierte Bedingungen

Bei Abfragen, die mehrere Operatoren und Ausdrücke erfordern, können Ausdrücke in Unterabfragen gruppiert werden. Unterabfragen sind in einer geöffneten Klammer "(" und schließend ")" enthalten.

Beispiel: "(Donut OR Bagel) (Kaffee ODER Tee)" gleicht Dokumente ab, die entweder "Donut" oder "Bagel" und entweder "Kaffee" oder "Tee" enthalten. <li-Eigenschaft>schränkt ein

Bei Abfragen, die einen Ausdruck für eine bestimmte AppSearchSchema Eigenschaft eines Dokuments benötigen, muss ein ":" zwischen dem Eigenschaftennamen und dem Ausdruck enthalten sein.

Beispiel: "subject:important" gleicht Dokumente ab, die den Begriff "wichtig" in der Eigenschaft "subject" enthalten. </ul>

Die obige Beschreibung behandelt die Abfrageoperatoren, die in allen Versionen von AppSearch unterstützt werden. Weitere Operatoren und ihre erforderlichen Features werden unten beschrieben.

LIST_FILTER_QUERY_LANGUAGE: Dieses Feature deckt die Erweiterung der Abfragesprache ab, um der Definition der Listenfiltersprache zu entsprechen (https://aip.dev/160). Dazu gehören:

<ul><li>addition of explicit 'AND' and 'NOT' operators <li>property restricts are allowed with groupings (ex. "prop:(a OR b)") <li>Addition von benutzerdefinierten Funktionen zur Steuerung des übereinstimmenden </ul>

Die neu hinzugefügten benutzerdefinierten Funktionen, die von diesem Feature abgedeckt werden, sind:

<ul><li>createList(String...) <li>search(String, List<String>) <li>propertyDefined(String) </ul>

createList akzeptiert eine variable Anzahl von Zeichenfolgen und gibt eine Liste von Zeichenfolgen zurück. Es ist für die Verwendung mit der Suche vorgesehen.

die Suche verwendet eine Abfragezeichenfolge, die gemäß der unterstützten Abfragesprache analysiert wird, und eine optionale Liste mit Zeichenfolgen, die die zu beschränkenden Eigenschaften angeben. Dies ist als Komfort für mehrere Eigenschaftseinschränkungen vorhanden. Beispielsweise könnte die Abfrage "(subject:foo OR body:foo) (subject:bar OR body:bar)" als "search("foo bar", createList("subject", "body"))" umgeschrieben werden.

propertyDefined verwendet eine Zeichenfolge, die die Eigenschaft von Interesse angibt und allen Dokumenten eines beliebigen Typs entspricht, der die angegebene Eigenschaft definiert (z. B. 'propertyDefined("sender.name")'). Beachten Sie, dass propertyDefined so lange übereinstimmt, wie der Typ des Dokuments die angegebene Eigenschaft definiert. Im Gegensatz zur unten stehenden Funktion "hasProperty" erfordert diese Funktion NICHT, dass das Dokument tatsächlich Werte für diese Eigenschaft enthält.

NUMERIC_SEARCH: Dieses Feature deckt numerische Suchausdrücke ab. In der Abfragesprache können die Werte von Eigenschaften, die festgelegt wurden AppSearchSchema.LongPropertyConfig#INDEXING_TYPE_RANGE , mit einem numerischen Suchausdruck (der Eigenschaft, einem unterstützten Vergleichszeichen und einem ganzzahligen Wert) abgeglichen werden. Unterstützte Vergleiche sind <: <=, ==, >= und >.

Ex. "Preis < 10" entspricht allen Dokumenten mit einem numerischen Wert in seiner Preiseigenschaft, die kleiner als 10 ist.

VERBATIM_SEARCH: Dieses Feature deckt den Verbatim-Zeichenfolgenoperator (Anführungszeichen) ab.

Ex. "foo/bar" OR baz" stellt sicher, dass "foo/bar" als einzelnes "verbatim"-Token behandelt wird.

LIST_FILTER_HAS_PROPERTY_FUNCTION: Dieses Feature deckt die Funktion "hasProperty" in Abfrageausdrücken ab, die eine Zeichenfolge verwendet, die die Eigenschaft von Interesse angibt und allen Dokumenten entspricht, die Werte für diese Eigenschaft enthalten. Nicht zu verwechseln mit der Funktion "propertyDefined", die überprüft, ob das Schema eines Dokuments die Eigenschaft definiert hat, anstatt ob ein Dokument selbst über diese Eigenschaft verfügt.

Ex. 'foo hasProperty("sender.name")' gibt alle Dokumente zurück, die den Begriff "foo" und werte in der Eigenschaft "sender.name" aufweisen. Betrachten Sie zwei Dokumente, documentA und documentB desselben Schemas mit einer optionalen Eigenschaft "sender.name". Wenn documentA "foo" in dieser Eigenschaft festlegt, aber documentB nicht, stimmt "hasProperty("sender.name")" nur mit documentA überein. "propertyDefined("sender.name")" stimmt jedoch sowohl mit documentA als auch mit documentB überein, unabhängig davon, ob ein Wert tatsächlich festgelegt ist.

LIST_FILTER_MATCH_SCORE_EXPRESSION_FUNCTION: Dieses Feature behandelt die Funktion "matchScoreExpression" in Abfrageausdrücken.

Verwendung: matchScoreExpression({score_expression}, {low}, {high})

<ul><li>matchScoreExpression gleicht alle Dokumente mit Ergebnissen ab, die in den angegebenen Bereich fallen. Diese Bewertungen werden mithilfe des bereitgestellten Bewertungsausdrucks berechnet, der der in SearchSpec.Builder#setRankingStrategy(String)definierten Syntax entspricht. <li>"score_expression" ist ein Zeichenfolgenwert, der den Scoreausdruck angibt. <li>"low" und "high" sind Gleitkommazahlen, die den Scorebereich angeben. Der Parameter "high" ist optional; wenn nicht angegeben, wird es standardmäßig auf positive Unendlichkeit festgelegt. </ul>

Ex. 'matchScoreExpression("this.documentScore()", 3, 4)' gibt alle Dokumente zurück, die Dokumentergebnisse von 3 bis 4 aufweisen.

SCHEMA_EMBEDDING_PROPERTY_CONFIG: Dieses Feature behandelt die Funktionen "semanticSearch" und "getEmbeddingParameter" in Abfrageausdrücken, die für die semantische Suche verwendet werden.

Verwendung: semanticSearch(getEmbeddingParameter({embedding_index}), {low}, {high}, {metric})

<ul><li>semanticSearch gleicht alle Dokumente ab, die mindestens einen Einbettungsvektor mit einer übereinstimmenden Modellsignatur haben (siehe EmbeddingVector#getModelSignature()) und einer Ähnlichkeitsbewertung innerhalb des angegebenen Bereichs basierend auf der bereitgestellten Metrik. <li>getEmbeddingParameter({embedding_index}) ruft die eingebettete Suche ab, die basierend auf dem angegebenen Index übergeben wird SearchSpec.Builder#addEmbeddingParameters , der von 0 beginnt. <li>"low" und "high" sind Gleitkommazahlen, die den Ähnlichkeitsbewertungsbereich angeben. Wenn sie weggelassen werden, werden sie standardmäßig auf negative und positive Unendlichkeit festgelegt. <li>"metric" ist ein Zeichenfolgenwert, der angibt, wie die Einbettung von Ähnlichkeiten berechnet werden soll. Wenn nicht angegeben, wird standardmäßig die in SearchSpec.Builder#setDefaultEmbeddingSearchMetricType(int). Mögliche Werte: <ul><li>"COSINE" <li>"DOT_PRODUCT" <li>"EUCLIDEAN" </ul/ul><>

Beispiele:

<ul><li>Basic: semanticSearch(getEmbeddingParameter(0), 0.5, 1, "COSINE") <li>Mit einer Eigenschaftseinschränkung: property1:semanticSearch(getEmbeddingParameter(0), 0.5, 1) <li>Hybrid: foo OR semanticSearch(getEmbeddingParameter(0), 0.5, 1) <li>Complex: (foo OR semanticSearch(getEmbeddingParameter(0), 0.5, 1)) AND bar </ul>

SEARCH_SPEC_SEARCH_STRING_PARAMETERS: Dieses Feature deckt die Funktion "getSearchStringParameter" in Abfrageausdrücken ab, die die Zeichenfolge ersetzt, die im gleichen Index in SearchSpec.Builder#addSearchStringParameters der Abfrage als Nur-Text bereitgestellt wird. Diese Zeichenfolge wird dann segmentiert, normalisiert und von Nur-Satz-Segmenten entfernt. Die verbleibenden Token werden dann ZUSAMMEN AND'd. Diese Funktion ist nützlich für Anrufer, die Benutzereingaben bereitstellen möchten, aber sicherstellen möchten, dass die Benutzereingabe keine Abfrageoperatoren aufruft.

Verwendung: getSearchStringParameter({search_parameter_strings_index})

Ex. 'foo OR getSearchStringParameter(0)' mit SearchSpec#getSearchStringParameters der Rückgabe {"bar OR baz."}. Die Zeichenfolge "Balken ODER baz". wird in "bar", "OR", "baz", "." unterteilt. Interpunktion wird entfernt, und die Segmente werden auf "Balken", "oder", "baz" normalisiert. Diese Abfrage entspricht "foo OR (bar AND oder AND baz)".

Zusätzliche Suchspezifikationen, z. B. Filtern nach AppSearchSchema Typ oder Hinzufügen von Projektionen, können durch Aufrufen des entsprechenden SearchSpec.Builder Setters festgelegt werden.

Diese Methode ist leicht. Die schwere Arbeit wird in .SearchResults#getNextPage

Java Dokumentation für android.app.appsearch.AppSearchSession.search(java.lang.String, android.app.appsearch.SearchSpec).

Teile dieser Seite sind Änderungen auf der Grundlage von Arbeiten, die von der Android Open Source Project erstellt und gemeinsam verwendet und gemäß den in der 2.5 Attribution License beschriebenen Begriffen verwendet werden.

Gilt für: