AppSearchSession.Search(String, SearchSpec) Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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.
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.