Opciones de consulta y de ordenamiento

Cuando llamas al método Index.Search usando solo una cadena de consulta, los resultados se muestran de acuerdo con las opciones de consulta predeterminadas:

  • Los documentos se muestran en un orden de clasificación descendiente.
  • Se muestran los documentos en grupos de 20 por vez.
  • Los documentos recuperados contienen todos sus campos originales.

Puedes usar una instancia de la estructura SearchOptions como argumento de Search para cambiar estas opciones. La estructura SearchOptions te permite especificar cuántos documentos mostrar a la vez. Esto también te permite personalizar los contenidos de los documentos recuperados. Puedes solicitar solo identificadores de documentos o solicitar que los documentos contengan solo un subconjunto de sus campos. También puedes crear campos personalizados en los documentos recuperados mediante expresiones de campo (campos con valores derivados de otros campos del documento).

Además de las opciones de la consulta, la estructura `SearchOptions` también puede incluir una instancia de la estructura SortOptions. Con las opciones de orden, puedes cambiar el orden de clasificación y ordenar los resultados según varias claves.

SearchOptions

Estas propiedades controlan cuántos resultados se muestran y en qué orden. Las opciones de offset y cursor, que son mutuamente excluyentes, son compatibles con la paginación. Especifican qué documentos seleccionados mostrar en los resultados.

Propiedad Descripción Valor predeterminado Máximo
Limit El máximo número de documentos que se muestran en los resultados. 20 1,000
Offset El desplazamiento del primer documento en los resultados que se mostrarán. 0. Los resultados incluirán todos los documentos que coincidan (hasta llegar al límite). 1,000
Cursor Puede usarse un cursor en lugar de un offset para recuperar grupos de documentos en un orden determinado. El cursor se actualiza a medida que pasa por consultas consecutivas, lo que permite que cada nueva búsqueda continúe desde el final de la anterior. El uso de cursores y desplazamientos se analiza en la página de referencia de búsqueda en Go. Nulo. Los resultados incluirán todos los documentos que coincidan (hasta llegar al límite). -
Sort Configura una estructura SortOptions para controlar el orden de los resultados de la búsqueda. Una instancia de SortOptions tiene su propio conjunto de propiedades, que se describen a continuación. Nulo. Ordenar por clasificación descendiente de documentos. -

Estas propiedades controlan qué campos de los documentos aparecen en los resultados.

Propiedad Descripción Valor predeterminado
IDsOnly Se configura en true o false. Cuando es true, los documentos que se muestran en los resultados contienen solo ID, no campos. false (muestra todos los campos).
Fields Especifica qué campos del documento se incluyen en los resultados. Pueden especificarse no más de 100 campos. Mostrar todos los campos de documentos (hasta 100 campos).
Expressions Expresiones de campo que describen campos calculados que se agregan a cada documento que se muestra en los resultados de la búsqueda. Estos campos se agregan a la propiedad de expresiones del documento. Este valor de campo se especifica escribiendo una expresión que puede incluir uno o más campos de documentos. Ninguno

SortOptions

Las propiedades de SortOptions controlan la forma en que se ordenan y puntúan los resultados de la búsqueda.

Propiedad Descripción Valor predeterminado
Expressions Una porción de SortExpressions que representa un orden multidimensional de los documentos. Ninguno
Scorer Un Scorer opcional. Cuando está presente, esta propiedad hace que los documentos se puntúen de acuerdo con la frecuencia del término de búsqueda. La puntuación estará disponible en el campo _score. Puntuar documentos puede ser costoso (tanto en operaciones facturables como en tiempo de ejecución) y puede ralentizar tus búsquedas. Usa la puntuación con moderación. None
Limit Número máximo de objetos que se ordenan o puntúan. No puede ser mayor a 10,000. 1,000

Ordenar en varias claves

Puedes ordenar los resultados de la búsqueda en múltiples claves de orden. Cada clave puede ser un simple nombre de campo o un valor que se calcula a partir de varios campos. Esta expresión se construye de acuerdo con las reglas de la sección siguiente.

Una SortExpression también define la dirección del orden y un valor de clave predeterminado que se usará en caso de que no pueda calcularse la expresión para un documento. A continuación, puedes ver la lista completa de propiedades:

Propiedad Descripción Valor predeterminado
Expr Una expresión que se evalúa cuando se ordenan los resultados para cada documento que coincide. Ninguno
Reverse Si es true, invierte el orden de los resultados de la búsqueda de modo que aparezcan en orden ascendente (en lugar del orden descendente predeterminado). false
Default El valor predeterminado de la expresión, si no hay ningún campo presente y no puede calcularse uno para un documento. Debe especificarse un valor de texto para los órdenes de texto. Debe especificarse un valor numérico para los órdenes numéricos. None

Ordenar en campos de valores múltiples

Cuando ordenas en un campo con valores múltiples de un tipo particular, solo se usa el primer valor asignado al campo. Por ejemplo, piensa en dos documentos, DocA y DocB, ambos con un campo de texto con el nombre "color". Se asignan dos valores al campo de "color" de DocA en el orden (rojo, azul), y dos valores a DocB en el orden (verde, rojo). Cuando ejecutas un orden que especifica el campo de texto "color", DocA se ordena en el valor "rojo" y DocB en el valor "verde". No se usan los otros valores de campo en el orden.

Ordenar o no ordenar

Si no especificas ninguna opción de orden, los resultados de la búsqueda se muestran automáticamente por orden de clasificación descendiente. No hay un límite para el número de documentos que se muestran en este caso. Si especificas opciones de orden, estas se aplican después de que se seleccionan los documentos coincidentes. Hay una propiedad explícita, SortOptions.Limit, que controla el tamaño del orden. No se puede ordenar más de 10,000 documentos, y el tamaño predeterminado es 1,000. Si la cantidad de documentos coincidentes supera el número especificado en SortOptions.Limit, la búsqueda solo recupera, ordena y muestra esa cantidad limitada. Se seleccionan los documentos para ordenar de la lista de todos los documentos coincidentes, que está ordenada por clasificación descendiente. Es posible que una consulta seleccione más documentos que coinciden de los que puedes ordenar. Si usas opciones de orden y es importante que recuperes todos los documentos que coinciden, debes intentar asegurarte de que tu búsqueda no muestre más resultados que los que puedes ordenar.

Escritura de expresiones

Las expresiones se usan para definir expresiones de campo (que se establecen en SearchOptions) y expresiones de ordenamiento, que se establecen en SortOptions. Se escriben como strings:

"price * quantity"
"(men + women)/2"
"min(daily_use, 10) * rate"
"snippet('rose', flower, 120)"

Las expresiones que incluyen campos de número pueden usar los operadores aritméticos (+, -, *, /) y las funciones numéricas incorporadas detalladas a continuación. Las expresiones que incluyen campos de puntos geográficos pueden usar las funciones de punto geográfico y distancia. Las expresiones para campos de texto y HTML pueden usar la función de fragmento.

Las expresiones también pueden incluir estos términos especiales:

Término Descripción
_rank La propiedad de clasificación. Se puede usar en expresiones de campo y expresiones de orden.
_score La puntuación asignada a un documento cuando incluyes un Scorer en SortOptions. Este término solo puede aparecer en expresiones de orden; no puede usarse en expresiones de campo.

Funciones numéricas

Las expresiones que definen valores numéricos para FieldExpressions y SortExpressions pueden usar estas funciones incluidas. Los argumentos deben ser números, nombres de campos o expresiones que usen números o nombres de campos.

Función Descripción Ejemplo
max Muestra el mayor de sus argumentos. max(recommended_retail_price, discount_price, wholesale_price)
min Muestra el menor de sus argumentos. min(height, width, length)
log Muestra el algoritmo natural. log(x)
abs Muestra el valor absoluto. abs(x)
pow Toma dos argumentos numéricos. La llamada pow(x, y) calcula el valor de x elevado a la potencia y. pow(x, 2)
count Toma un nombre de campo de su argumento. Muestra el número de campos en el documento con ese nombre. No olvides que un documento puede contener múltiples campos o tipos diferentes con el mismo nombre. Nota: count solo puede usarse en FieldExpressions. No puede aparecer en SortExpressions. count(user)

Funciones de puntos geográficos

Estas funciones pueden usarse para expresiones que incluyen campos de puntos geográficos.

Función Descripción Ejemplo
geopoint Define un punto geográfico con una latitud y longitud determinadas. geopoint(-31.3, 151.4)
distance Calcula la distancia en metros entre dos puntos geográficos. Ten en cuenta que cualquiera de los dos argumentos puede ser el nombre de un campo de punto geográfico o una invocación de la función de punto geográfico. Sin embargo, solo un argumento puede ser un nombre de campo. distance(geopoint(23, 134), store_location)

Fragmentos

Se refiere a un fragmento de un campo de texto que coincide con una cadena de consulta y abarca el texto que lo rodea. Los fragmentos se crean llamando a la función snippet:

snippet(query, body, [max_chars])

query
Una cadena de consulta entrecomillada que especifica el texto que debe encontrarse en el campo.
body
El nombre de un campo de texto, HTML o atómico.
max_chars
La cantidad máxima de caracteres para mostrar en el fragmento. Este argumento es opcional, la cantidad predeterminada es de 160 caracteres.

La función muestra una string HTML. La string contiene un fragmento del valor del campo del cuerpo, con el texto que coincidió con la consulta en negrita.

¿Te ha resultado útil esta página? Enviar comentarios:

Enviar comentarios sobre...

Entorno estándar de App Engine para Go