Idioma

AppSearchSession.Search(String, SearchSpec) Método

Definição

Recupera documentos do open AppSearchSession que correspondem a uma determinada cadeia de caracteres de consulta e ao tipo de pesquisa fornecidos.

[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

Parâmetros

queryExpression
String

cadeia de caracteres de consulta a ser pesquisada.

searchSpec
SearchSpec

especificação para definir filtros de documento, adicionar projeção, definir tipo de correspondência de termo etc.

Retornos

um SearchResults objeto para documentos correspondentes recuperados.

Atributos

Comentários

Recupera documentos do open AppSearchSession que correspondem a uma determinada cadeia de caracteres de consulta e ao tipo de pesquisa fornecidos.

As cadeias de caracteres de consulta podem estar vazias, conter um termo sem operadores ou conter vários termos e operadores.

Para cadeias de caracteres de consulta vazias, todos os documentos que correspondem ao SearchSpec serão retornados.

Para cadeias de caracteres de consulta com um único termo e nenhum operador, documentos que correspondem à cadeia de caracteres de consulta fornecida e SearchSpec serão retornados.

Há suporte para os seguintes operadores:

<ul><li>AND (implícito)

E é um operador que corresponde a documentos que contêm todos os termos fornecidos.

<b>OBSERVAÇÃO:</b> Um espaço entre termos é tratado como um operador "AND". A inclusão explícita de "AND" em uma cadeia de caracteres de consulta tratará "AND" como um termo, retornando documentos que também contêm "AND".

Exemplo: "maçã E banana" corresponde a documentos que contêm os termos "maçã", "e", "banana".

Exemplo: "banana de maçã" corresponde a documentos que contêm "maçã" e "banana".

Exemplo: "cereja de banana de maçã" corresponde a documentos que contêm "maçã", "banana" e "cereja". <li>OR

OU é um operador que corresponde a documentos que contêm qualquer termo fornecido.

Exemplo: "maçã OU banana" corresponde a documentos que contêm "maçã" ou "banana".

Exemplo: "maçã OU banana OU cereja" corresponde a documentos que contêm qualquer "maçã", "banana" ou "cereja". <li>Exclusion (-)

Exclusão (-) é um operador que corresponde a documentos que não contêm o termo fornecido.

Exemplo: "-apple" corresponde a documentos que não contêm "apple". <Termos agrupados li>

Para consultas que exigem vários operadores e termos, os termos podem ser agrupados em subconsultas. As subconsultas estão contidas em um parêntese "(" e ")" aberto.

Exemplo: "(donut OR bagel) (café OU chá)" corresponde a documentos que contêm "rosca" ou "bagel" e "café" ou "chá". <Restrições de propriedade li>

Para consultas que exigem um termo para corresponder a uma propriedade específica AppSearchSchema de um documento, um ":" deve ser incluído entre o nome da propriedade e o termo.

Exemplo: "subject:important" corresponde a documentos que contêm o termo "importante" na propriedade "subject". </ul>

A descrição acima aborda os operadores de consulta com suporte em todas as versões do AppSearch. Operadores adicionais e seus recursos necessários são descritos abaixo.

LIST_FILTER_QUERY_LANGUAGE: esse recurso aborda a expansão da linguagem de consulta para estar em conformidade com a definição da linguagem de filtros de lista (https://aip.dev/160). Isso inclui:

<ul><li>adição de operadores explícitos <'AND' e 'NOT' li>restrições de propriedade são permitidos com agrupamentos (por exemplo. "prop:(a OR b)") <li>adição de funções personalizadas para controlar a correspondência </ul>

As funções personalizadas recém-adicionadas cobertas por esse recurso são:

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

createList usa um número variável de cadeias de caracteres e retorna uma lista de cadeias de caracteres. É para uso com a pesquisa.

A pesquisa usa uma cadeia de caracteres de consulta que será analisada de acordo com a linguagem de consulta com suporte e uma lista opcional de cadeias de caracteres que especificam as propriedades a serem restritas. Isso existe como uma conveniência para várias restrições de propriedade. Portanto, por exemplo, a consulta '(subject:foo OR body:foo) (subject:bar OR body:bar)' pode ser reescrita como 'search("foo bar", createList("subject", "body"))'.

propertyDefined usa uma cadeia de caracteres especificando a propriedade de interesse e corresponde a todos os documentos de qualquer tipo que defina a propriedade especificada (ex. 'propertyDefined("sender.name")'). Observe que propertyDefined corresponderá desde que o tipo do documento defina a propriedade especificada. Ao contrário da função "hasProperty" abaixo, essa função não exige que o documento realmente mantenha quaisquer valores para essa propriedade.

NUMERIC_SEARCH: esse recurso abrange expressões de pesquisa numéricas. Na linguagem de consulta, os valores das propriedades definidas AppSearchSchema.LongPropertyConfig#INDEXING_TYPE_RANGE podem ser correspondidos com uma expressão de pesquisa numérica (a propriedade, um comparador com suporte e um valor inteiro). Os comparadores com suporte são <, <=, ==, >= e >.

Ex. 'price < 10' corresponderá a todos os documentos que têm um valor numérico em sua propriedade de preço menor que 10.

VERBATIM_SEARCH: esse recurso abrange o operador de cadeia de caracteres verbatim (aspas).

Ex. '"foo/bar" OR baz' garantirá que 'foo/bar' seja tratado como um único token 'verbatim'.

LIST_FILTER_HAS_PROPERTY_FUNCTION: esse recurso aborda a função "hasProperty" em expressões de consulta, que usa uma cadeia de caracteres especificando a propriedade de interesse e corresponde a todos os documentos que contêm valores para essa propriedade. Não deve ser confundido com a função "propertyDefined", que verifica se o esquema de um documento definiu a propriedade, em vez de se um documento em si tem essa propriedade.

Ex. 'foo hasProperty("sender.name")' retornará todos os documentos que têm o termo "foo" AND têm valores na propriedade "sender.name". Considere dois documentos, documentA e documentB, do mesmo esquema com uma propriedade opcional "sender.name". Se documentA definir "foo" nesta propriedade, mas documentB não, 'hasProperty("sender.name")' corresponderá apenas ao documentA. No entanto, 'propertyDefined("sender.name")' corresponderá ao documentA e ao documentB, independentemente de um valor ser realmente definido.

LIST_FILTER_MATCH_SCORE_EXPRESSION_FUNCTION: esse recurso aborda a função "matchScoreExpression" em expressões de consulta.

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

<ul><li>matchScoreExpression corresponde a todos os documentos com pontuações que estão dentro do intervalo especificado. Essas pontuações são calculadas usando a expressão de pontuação fornecida, que adere à sintaxe definida em SearchSpec.Builder#setRankingStrategy(String). <li>"score_expression" é um valor de cadeia de caracteres que especifica a expressão de pontuação. <li>"low" e "high" são números de ponto flutuante que especificam o intervalo de pontuação. O parâmetro "high" é opcional; se não for fornecido, ele usará como padrão o infinito positivo. </ul>

Ex. 'matchScoreExpression("this.documentScore()", 3, 4)' retornará todos os documentos com pontuações de documento de 3 a 4.

SCHEMA_EMBEDDING_PROPERTY_CONFIG: esse recurso aborda as funções "semanticSearch" e "getEmbeddingParameter" em expressões de consulta, que são usadas para pesquisa semântica.

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

<ul><li>semanticSearch corresponde a todos os documentos que têm pelo menos um vetor de inserção com uma assinatura de modelo correspondente (veja EmbeddingVector#getModelSignature()) e uma pontuação de similaridade dentro do intervalo especificado com base na métrica fornecida. <li>getEmbeddingParameter({embedding_index}) recupera a pesquisa de inserção passada com base no SearchSpec.Builder#addEmbeddingParameters índice especificado, que começa a partir de 0. <li>"low" e "high" são números de ponto flutuante que especificam o intervalo de pontuação de similaridade. Se omitidos, eles assumem o padrão como infinito negativo e positivo, respectivamente. <li>"metric" é um valor de cadeia de caracteres que especifica como as semelhanças de inserção devem ser calculadas. Se omitido, ele usará como padrão a métrica especificada em SearchSpec.Builder#setDefaultEmbeddingSearchMetricType(int). Valores possíveis: <ul><li>"COSINE" <li>"DOT_PRODUCT" <li>"EUCLIDEAN" </ul></ul>

Exemplos:

<ul><li>Basic: semanticSearch(getEmbeddingParameter(0), 0.5, 1, "COSINE") <li>Com uma restrição de propriedade: property1:semanticSearch(getEmbeddingParameter(0), 0.5, 1) <li>Híbrido: 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: esse recurso aborda a função "getSearchStringParameter" em expressões de consulta, que substitui a cadeia de caracteres fornecida no mesmo índice na SearchSpec.Builder#addSearchStringParameters consulta como texto sem formatação. Essa cadeia de caracteres é segmentada, normalizada e despojada de segmentos somente pontuação. Os tokens restantes são, então, AND'd juntos. Essa função é útil para os chamadores que desejam fornecer entrada do usuário, mas querem garantir que a entrada do usuário não invoque nenhum operador de consulta.

Uso: getSearchStringParameter({search_parameter_strings_index})

Ex. 'foo OR getSearchStringParameter(0)' com SearchSpec#getSearchStringParameters {"bar OR baz."}. A cadeia de caracteres "barra OU baz". será segmentado em "bar", "OR", "baz", ".". A pontuação é removida e os segmentos são normalizados como "bar", "or", "baz". Essa consulta será equivalente a "foo OR (bar AND ou AND baz)".

Especificações de pesquisa adicionais, como filtragem por AppSearchSchema tipo ou adição de projeção, podem ser definidas chamando o setter correspondente SearchSpec.Builder .

Esse método é leve. O trabalho pesado será feito em SearchResults#getNextPage.

Java documentação para android.app.appsearch.AppSearchSession.search(java.lang.String, android.app.appsearch.SearchSpec).

Partes desta página são modificações baseadas no trabalho criado e compartilhado pelo Project Open Source do Open Source e usadas de acordo com os termos descritos na Creative Commons 2.5.

Aplica-se a