Lingua

AppSearchSession.Search(String, SearchSpec) Metodo

Definizione

Recupera i documenti dall'apertura AppSearchSession che corrispondono a una determinata stringa di query e al tipo di ricerca specificato.

[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

Parametri

queryExpression
String

stringa di query da cercare.

searchSpec
SearchSpec

specifica per l'impostazione dei filtri documento, l'aggiunta di proiezione, l'impostazione del tipo di corrispondenza del termine e così via.

Valori restituiti

oggetto SearchResults per i documenti corrispondenti recuperati.

Attributi

Commenti

Recupera i documenti dall'apertura AppSearchSession che corrispondono a una determinata stringa di query e al tipo di ricerca specificato.

Le stringhe di query possono essere vuote, contenere un termine senza operatori o contenere più termini e operatori.

Per le stringhe di query vuote, verranno restituiti tutti i documenti corrispondenti a SearchSpec .

Per le stringhe di query con un singolo termine e nessun operatore, i documenti che corrispondono alla stringa di query specificata e SearchSpec verranno restituiti.

Sono supportati gli operatori seguenti:

<ul><li>AND (implicito)

AND è un operatore che corrisponde ai documenti che contengono tutti i termini forniti.

<b NOTA:</b>> Uno spazio tra i termini viene considerato come operatore "AND". L'inclusione esplicita di "AND" in una stringa di query considera "AND" come termine, restituendo documenti che contengono anche "AND".

Esempio: "apple AND banana" corrisponde a documenti contenenti i termini "apple", "and", "banana".

Esempio: "apple banana" corrisponde a documenti che contengono sia "mela" che "banana".

Esempio: "apple banana cherry" corrisponde ai documenti che contengono "apple", "banana" e "cherry". <li>OR

OR è un operatore che corrisponde ai documenti che contengono un termine specificato.

Esempio: "apple OR banana" corrisponde a documenti contenenti "apple" o "banana".

Esempio: "apple OR banana OR cherry" corrisponde ai documenti che contengono una qualsiasi "mela", "banana" o "cherry". <esclusione li>(-)

L'esclusione (-) è un operatore che corrisponde a documenti che non contengono il termine specificato.

Esempio: "-apple" corrisponde a documenti che non contengono "apple". <Termini raggruppati li>

Per le query che richiedono più operatori e termini, i termini possono essere raggruppati in sottoquery. Le sottoquery sono contenute all'interno di una parentesi aperta "(" e chiudi ")".

Esempio: "(donut OR bagel) (coffee OR tea)" corrisponde ai documenti che contengono "donut" o "bagel" e "coffee" o "tea". <Li>, proprietà Restricts

Per le query che richiedono che un termine corrisponda a una proprietà specifica AppSearchSchema di un documento, è necessario includere un valore ":" tra il nome della proprietà e il termine .

Esempio: "subject:important" corrisponde a documenti che contengono il termine "important" nella proprietà "subject". </ul>

La descrizione precedente illustra gli operatori di query supportati in tutte le versioni di AppSearch. Gli operatori aggiuntivi e le relative funzionalità necessarie sono descritti di seguito.

LIST_FILTER_QUERY_LANGUAGE: questa funzionalità illustra l'espansione del linguaggio di query in modo che sia conforme alla definizione del linguaggio dei filtri elenco (https://aip.dev/160). Tra queste vi sono anche:

<Ul><li>addizione di operatori espliciti 'AND' e 'NOT' li <>property restricts sono consentiti con raggruppamenti (ad esempio. "prop:(a OR b)") <li>addizione di funzioni personalizzate per controllare la corrispondenza <di /ul>

Le funzioni personalizzate appena aggiunte descritte da questa funzionalità sono:

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

createList accetta un numero variabile di stringhe e restituisce un elenco di stringhe. È per l'uso con la ricerca.

la ricerca accetta una stringa di query che verrà analizzata in base al linguaggio di query supportato e a un elenco facoltativo di stringhe che specificano le proprietà a cui limitare. Ciò è utile per limitare più proprietà. Ad esempio, è possibile riscrivere la query '(subject:foo OR body:foo) (subject:bar OR body:bar)' come 'search("foo bar", createList("subject", "body")'.

propertyDefined accetta una stringa che specifica la proprietà di interesse e corrisponde a tutti i documenti di qualsiasi tipo che definisce la proprietà specificata (ad esempio. 'propertyDefined("sender.name")'). Si noti che propertyDefined corrisponderà fino a quando il tipo del documento definisce la proprietà specificata. A differenza della funzione "hasProperty" riportata di seguito, questa funzione non richiede che il documento contenga effettivamente valori per questa proprietà.

NUMERIC_SEARCH: questa funzionalità include espressioni di ricerca numeriche. Nel linguaggio di query i valori delle proprietà AppSearchSchema.LongPropertyConfig#INDEXING_TYPE_RANGE impostate possono essere confrontati con un'espressione di ricerca numerica (la proprietà , un comparatore supportato e un valore intero). I comparatori supportati sono <, <=, ==, >= e >.

Ex. 'price < 10' corrisponderà a tutti i documenti con un valore numerico nella proprietà di prezzo inferiore a 10.

VERBATIM_SEARCH: questa funzionalità illustra l'operatore stringa verbatim (virgolette).

Ex. '"foo/bar" OR baz' garantirà che 'foo/bar' sia considerato come un singolo token 'verbatim'.

LIST_FILTER_HAS_PROPERTY_FUNCTION: questa funzionalità illustra la funzione "hasProperty" nelle espressioni di query, che accetta una stringa che specifica la proprietà di interesse e corrisponde a tutti i documenti che contengono valori per questa proprietà. Non confondersi con la funzione "propertyDefined", che controlla se lo schema di un documento ha definito la proprietà , anziché se un documento ha questa proprietà.

Ex. 'foo hasProperty("sender.name")' restituirà tutti i documenti con il termine "foo" E hanno valori nella proprietà "sender.name". Si considerino due documenti, documentA e documentB, dello stesso schema con una proprietà facoltativa "sender.name". Se documentA imposta "foo" in questa proprietà ma documentB non, 'hasProperty("sender.name")' corrisponderà solo a documentA. Tuttavia, 'propertyDefined("sender.name")' corrisponderà sia a documentA che a documentB, indipendentemente dal fatto che sia impostato un valore.

LIST_FILTER_MATCH_SCORE_EXPRESSION_FUNCTION: questa funzionalità illustra la funzione "matchScoreExpression" nelle espressioni di query.

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

<ul><li>matchScoreExpression corrisponde a tutti i documenti con punteggi compresi nell'intervallo specificato. Questi punteggi vengono calcolati usando l'espressione di punteggio fornita, conforme alla sintassi definita in SearchSpec.Builder#setRankingStrategy(String). <li>"score_expression" è un valore stringa che specifica l'espressione del punteggio. <li>"low" e "high" sono numeri a virgola mobile che specificano l'intervallo di punteggi. Il parametro "high" è facoltativo; se non specificato, il valore predefinito è infinito positivo. </ul>

Ex. 'matchScoreExpression("this.documentScore()", 3, 4)' restituirà tutti i documenti con punteggi di documento da 3 a 4.

SCHEMA_EMBEDDING_PROPERTY_CONFIG: questa funzionalità illustra le funzioni "semanticSearch" e "getEmbeddingParameter" nelle espressioni di query, usate per la ricerca semantica.

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

<ul><li>semanticSearch corrisponde a tutti i documenti con almeno un vettore di incorporamento con una firma del modello corrispondente (vedere EmbeddingVector#getModelSignature()) e un punteggio di somiglianza all'interno dell'intervallo specificato in base alla metrica specificata. <li>getEmbeddingParameter({embedding_index}) recupera la ricerca di incorporamento passata in SearchSpec.Builder#addEmbeddingParameters base all'indice specificato, che inizia da 0. <li>"low" e "high" sono numeri a virgola mobile che specificano l'intervallo di punteggi di somiglianza. Se omesso, per impostazione predefinita viene impostato l'infinito negativo e positivo, rispettivamente. <li>"metric" è un valore stringa che specifica come calcolare le analogie di incorporamento. Se omesso, per impostazione predefinita viene predefinito la metrica specificata in SearchSpec.Builder#setDefaultEmbeddingSearchMetricType(int). Valori possibili: <ul><li>"COSINE" <li>"DOT_PRODUCT" <li>"EUCLIDEAN" </ul></ul>

Esempi:

<ul><li>Basic: semanticSearch(getEmbeddingParameter(0), 0.5, 1, "COSINE") <li With a property restriction: 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: questa funzionalità illustra la funzione "getSearchStringParameter" nelle espressioni di query, che sostituisce la stringa fornita con lo stesso indice nella SearchSpec.Builder#addSearchStringParameters query come testo normale. Questa stringa viene quindi segmentata, normalizzata e rimossa di segmenti di sola punteggiatura. I token rimanenti vengono quindi combinati con AND. Questa funzione è utile per i chiamanti che desiderano fornire l'input dell'utente, ma vogliono assicurarsi che l'input dell'utente non richiami operatori di query.

Utilizzo: getSearchStringParameter({search_parameter_strings_index})

Ex. 'foo OR getSearchStringParameter(0)' con SearchSpec#getSearchStringParameters restituzione di {"bar OR baz."}. Stringa "bar OR baz". sarà segmentato in "bar", "OR", "baz", ".". La punteggiatura viene rimossa e i segmenti vengono normalizzati in "bar", "or", "baz". Questa query sarà equivalente a 'foo OR (bar AND o AND baz)'.

È possibile impostare specifiche di ricerca aggiuntive, ad esempio filtrando per AppSearchSchema tipo o aggiungendo proiezione, chiamando il setter corrispondente SearchSpec.Builder .

Questo metodo è leggero. Il lavoro pesante verrà eseguito in SearchResults#getNextPage.

per android.app.appsearch.AppSearchSession.search(java.lang.String, android.app.appsearch.SearchSpec).

Le parti di questa pagina sono modifiche basate sul lavoro creato e condiviso dalla e usati in base ai termini descritti in Creative License 2.5 Attribution License.

Si applica a