Quando você chama o método Index.Search
usando apenas uma string de consulta, os resultados
são retornados de acordo com as opções de consulta padrão:
- Os documentos são retornados classificados na ordem decrescente.
- Os documentos são retornados em grupos de 20 por vez.
- Os documentos recuperados contêm todos os campos originais.
Use uma instância da estrutura
SearchOptions
como argumento para Search
para alterar essas opções.
A estrutura SearchOptions
permite especificar quantos documentos retornar
por vez. além de personalizar o conteúdo dos documentos recuperados. É possível solicitar apenas identificadores de documento ou que os documentos contenham somente um subconjunto dos campos. Crie também campos personalizados nos
documentos recuperados usando
expressões de campo (campos com valores
derivados de outros campos no documento).
Além das opções de consulta, a
estrutura
"SearchOptions" pode incluir uma instância da
estrutura SortOptions
. Com as opções de classificação, é possível alterar a ordem de classificação e agrupar os resultados em várias chaves.
SearchOptions
Essas propriedades controlam a quantidade e a ordem dos resultados retornados. As opções de deslocamento e cursor, mutuamente exclusivas, são compatíveis com a paginação. Elas especificam quais documentos selecionados são retornados nos resultados.
Propriedade | Descrição | Padrão | Máximo |
---|---|---|---|
Limit |
O número máximo de documentos a serem retornados nos resultados. | 20 | 1000 |
Offset |
O deslocamento do primeiro documento nos resultados a serem retornados. | 0. Os resultados incluirão todos os documentos correspondentes (até o limite). | 1.000 |
Cursor |
Um cursor pode ser usado no lugar de um deslocamento para recuperar grupos de documentos em ordem classificada. Um cursor é atualizado à medida que é passado para dentro e fora de consultas consecutivas, permitindo que cada nova pesquisa continue a partir do fim da anterior. O cursor e o deslocamento são abordados na página de referência de pesquisa do Go. | Nulo. Os resultados incluirão todos os documentos correspondentes (até o limite). | - |
Sort |
Defina uma estrutura SortOptions para controlar a ordem dos resultados da pesquisa. Uma instância de SortOptions tem seu próprio conjunto de propriedades descritas abaixo. |
Nulo. Classificar diminuindo a classificação do documento. | - |
Essas propriedades controlam quais campos do documento são exibidos nos resultados.
Propriedade | Descrição | Padrão |
---|---|---|
IDsOnly |
Defina como true ou false . Quando true , os documentos retornados nos resultados conterão apenas IDs, sem campos. |
false (retorna todos os campos). |
Fields |
Especifica quais campos do documento precisam ser incluídos nos resultados. Não é possível especificar mais de 100 campos. | Retornar todos os campos do documento (até 100 campos). |
Expressions |
Expressões de campo que descrevem campos processados adicionados a cada documento retornado nos resultados da pesquisa. Esses campos são adicionados à propriedade "expressions" do documento. O valor do campo é especificado escrevendo uma expressão que pode incluir um ou mais campos do documento. | Nenhum |
SortOptions
As propriedades de SortOptions
controlam a ordem e a pontuação dos resultados da
pesquisa.
Propriedade | Descrição | Padrão |
---|---|---|
Expressions |
Um trecho de SortExpressions que representa uma classificação multidimensional de documentos. |
Nenhum |
Scorer |
um Scorer (em inglês) opcional; Quando presente, fará os documentos serem pontuados de acordo com a frequência do termo de pesquisa. A pontuação estará disponível como o campo _score . A pontuação de documentos pode ser cara, tanto em termos de operações faturáveis quanto de tempo de execução, e pode deixar as pesquisas lentas. Use a pontuação com moderação. |
Nenhum |
Limit |
Número máximo de objetos para pontuar e/ou classificar. Não pode ser mais que 10.000. | 1.000 |
Como classificar várias chaves
É possível ordenar os resultados da pesquisa em várias chaves de classificação. Cada chave é um nome de campo simples ou um valor calculado com base em vários campos. Essa expressão é construída de acordo com as regras na próxima seção.
Um SortExpression
também define a direção da classificação e um valor de chave padrão a ser usado,
caso a expressão não seja calculada para um documento. Veja a seguir a lista completa de propriedades:
Propriedade | Descrição | Padrão |
---|---|---|
Expr |
Uma expressão a ser avaliada durante a classificação de resultados para cada documento correspondente. | Nenhum |
Reverse |
Se true , inverta a ordem dos resultados da pesquisa. Desse modo, eles serão exibidos em ordem crescente, e não no padrão decrescente. |
false |
Default |
O valor padrão da expressão, se nenhum campo estiver presente e não puder ser calculado para um documento. Um valor de texto precisa ser especificado para classificações de texto. Um valor numérico precisa ser especificado para classificações numéricas. | Nenhum |
Como classificar campos com vários valores
Quando você classifica um campo com vários valores de um determinado tipo, somente o primeiro valor atribuído ao campo é usado. Por exemplo, considere dois documentos, DocA e DocB, que têm um campo de texto chamado "cor". Dois valores são atribuídos ao campo "cor" de DocA na ordem (vermelho, azul), e dois valores ao DocB na ordem (verde, vermelho). Quando você executa uma classificação especificando o campo de texto "cor", o DocA é classificado no valor "vermelho" e o DocB no valor "verde". Os outros valores de campo não são usados na classificação.
Classificar ou não classificar
Caso nenhuma opção de classificação seja especificada, os resultados da pesquisa serão retornados automaticamente na classificação decrescente. Não há limite para o número de documentos retornados nesse caso. Por outro lado, ao especificar qualquer opção de classificação, ela será realizada depois que todos os documentos correspondentes forem selecionados. Há uma
propriedade explícita,
SortOptions.Limit
,
que controla o tamanho
da classificação. Não é possível classificar mais de 10.000 documentos. O padrão é 1.000. Quando
o número de documentos correspondentes é maior do que o número especificado por
SortOptions.Limit
, a pesquisa apenas recupera, classifica
e retorna esse número limitado. Ela seleciona os documentos para classificação na lista de todos os documentos correspondentes, que está em ordem decrescente. Talvez o número de documentos correspondentes selecionados por uma consulta seja maior do que é possível classificar. Quando você utilizar as opções de classificação e for importante recuperar todos os documentos correspondentes, tente garantir que sua consulta não retorne mais documentos do que é possível para o processo.
Como escrever expressões
As expressões são usadas para definir expressões de campo (que são definidas no
SearchOptions
) e expressões de classificação, que são
definidas no SortOptions
. Elas são escritas como strings:
"price * quantity"
"(men + women)/2"
"min(daily_use, 10) * rate"
"snippet('rose', flower, 120)"
As expressões que envolvem campos numéricos usam os operadores aritméticos (+, -, *, /) e as funções numéricas integradas listadas abaixo. As expressões que envolvem campos de geoponto usam as funções de geoponto e distância. As expressões para campos de texto e HTML podem usar a função de snippet.
As expressões também podem incluir estes termos especiais:
Termo | Descrição |
---|---|
_rank |
Propriedade rank de um documento. Pode ser usada em expressões de campo e de classificação. |
_score |
A pontuação atribuída a um documento quando você inclui um Scorer no SortOptions . Esse termo só pode ser exibido em expressões de classificação. Ele não pode ser usado em expressões de campo. |
Funções numéricas
As expressões para definir valores numéricos para FieldExpressions
e SortExpressions
podem usar essas funções incorporadas. Os argumentos precisam ser números, nomes de campo ou expressões que usam números e nomes de campo.
Função | Descrição | Exemplo |
---|---|---|
max |
Retorna o maior dos argumentos. | max(recommended_retail_price, discount_price, wholesale_price) |
min |
Retorna o menor dos argumentos. | min(height, width, length) |
log |
Retorna o logaritmo natural. | log(x) |
abs |
Retorna o valor absoluto. | abs(x) |
pow |
Utiliza dois argumentos numéricos. A chamada pow(x, y) calcula o valor de x elevado à potência y. | pow(x, 2) |
count |
Utiliza um nome de campo como argumento. Retorna o número de campos no documento com esse nome. Lembre-se de que um documento pode conter vários campos de tipos diferentes com o mesmo nome. Observação: count só pode ser usado em FieldExpressions . Ele não pode aparecer em SortExpressions . |
count(user) |
Funções de geoponto
Essas funções podem ser usadas em expressões que envolvem campos de geoponto.
Função | Descrição | Exemplo |
---|---|---|
geopoint |
Define um geoponto considerando latitude e longitude. | geopoint(-31.3, 151.4) |
distance |
Calcula a distância em metros entre dois geopontos. Qualquer um dos dois argumentos pode ser o nome de um campo de geoponto ou uma invocação da função de geoponto. No entanto, somente um argumento pode ser o nome de um campo. | distance(geopoint(23, 134), store_location) |
Snippets
Snippet é um fragmento de um campo de texto que corresponde a uma string de consulta e inclui o texto próximo. Os snippets são criados chamando a função snippet
:
snippet(query, body, [max_chars])
query
- Uma string de consulta entre aspas especificando o texto a ser localizado no campo.
body
- O nome de um campo de texto, HTML ou Atom.
max_chars
- O número máximo de caracteres a serem retornados no snippet. Esse argumento é opcional. O padrão é de 160 caracteres.
A função retorna uma string HTML. A string contém um snippet do valor do campo de corpo, com o texto correspondente à consulta em negrito.