Opzioni di query e ordinamento

Quando chiami il metodo Index.Search utilizzando solo una stringa di query, i risultati vengono riportati in base alle opzioni di query predefinite:

  • I documenti vengono restituiti in ordine decrescente
  • I documenti vengono restituiti in gruppi di 20 documenti alla volta
  • I documenti recuperati contengono tutti i campi originali

Puoi utilizzare un'istanza del struct SearchOptions come argomento per Search per modificare queste opzioni.

Lo struct SearchOptions di specificare quanti documenti alla volta. Inoltre, ti consente di personalizzare i contenuti dei documenti recuperati. Puoi richiedere solo gli identificatori dei documenti o richiedere i documenti contengono solo un sottoinsieme dei rispettivi campi. Puoi anche creare campi personalizzati nei documenti recuperati utilizzando le espressioni di campo (campi con valori ricavati da altri campi del documento).

Oltre alle opzioni di query, la struttura `SearchOptions` può includere anche un'istanza della struttura SortOptions. Utilizzando le opzioni di ordinamento, puoi cambiare l'ordine di ordinamento e ordinare i risultati in base a più chiavi.

SearchOptions

Queste proprietà controllano il numero di risultati restituiti e l'ordine in cui vengono restituiti. Le opzioni offset e cursor, che si escludono a vicenda, supportano la paginazione. Specificano quali documenti selezionati restituire nei risultati.

Proprietà Descrizione Predefinito Massimo
Limit Il numero massimo di documenti da restituire nei risultati. 20 1000
Offset L'offset del primo documento nei risultati da restituire. 0. I risultati conterranno tutti i documenti corrispondenti (fino al limite). 1000
Cursor Un cursore può essere utilizzato al posto di un offset per recuperare gruppi di documenti in ordine alfabetico. Un cursore viene aggiornato quando viene passato all'interno e all'esterno di query consecutive, consentendo di continuare ogni nuova ricerca dalla fine di quella precedente. Il cursore e l'offset sono descritti nella pagina Riferimento alla ricerca di Go. Null. I risultati conterranno tutti i documenti corrispondenti (fino al limite). -
Sort Imposta uno struct SortOptions per controllare l'ordine dei risultati di ricerca. Un'istanza di SortOptions ha il proprio insieme di proprietà, descritte di seguito. Null. Ordina in base al ranking decrescente dei documenti. -

Queste proprietà controllano quali campi del documento vengono visualizzati nei risultati.

Proprietà Descrizione Predefinito
IDsOnly Imposta su true o false. Quando true, i documenti restituiti nei risultati conterranno solo ID, nessun campo. false (restituisce tutti i campi).
Fields Specifica i campi del documento da includere nei risultati. Non è possibile specificare più di 100 campi. Restituisci tutti i campi del documento (fino a 100 campi).
Expressions Espressioni di campo che descrivono i campi calcolati che vengono aggiunti a ogni documento restituito nei risultati della ricerca. Questi campi vengono aggiunti alla proprietà relativa alle espressioni del documento. Il valore del campo viene specificato scrivendo un'espressione che può includere uno o più campi del documento. Nessuno

SortOptions

Le proprietà di SortOptions controllano l'ordine e il punteggio della ricerca che consentono di analizzare i dati e visualizzare i risultati.

Proprietà Descrizione Predefinito
Expressions Una sezione di SortExpressions che rappresenta un tipo di Documenti multidimensionale. Nessuno
Scorer Un Scorer facoltativo. In questo caso, i documenti verranno valutati in base alla frequenza del termine di ricerca. Il punteggio sarà disponibile nel campo _score. La valutazione dei documenti può essere costosa (sia per le operazioni fatturabili che per i tempi di esecuzione) e può rallentare le ricerche. Usa il punteggio con parsimonia. Nessuno
Limit Numero massimo di oggetti da valutare e/o ordinare. Non può essere superiore a 10.000. 1000

Ordinamento su più chiavi

Puoi ordinare i risultati della ricerca in base a più chiavi di ordinamento. Ogni chiave può essere un semplice nome campo o un valore calcolato da più campi. Questa espressione viene creata in base alle regole sezione successiva.

Un SortExpression definisce anche l'ordine di ordinamento e un valore della chiave predefinito da utilizzare se l'espressione non può essere calcolata per un documento. Ecco l'elenco completo delle proprietà:

Proprietà Descrizione Predefinito
Expr Un'espressione da valutare durante l'ordinamento dei risultati per ogni documento corrispondente. Nessuno
Reverse Se true inverte l'ordinamento dei risultati di ricerca in modo che vengano visualizzati in ordine crescente (anziché in ordine decrescente predefinito). false
Default Valore predefinito dell'espressione, se non è presente alcun campo e non può essere calcolato per un documento. Per le ordinamento di testo deve essere specificato un valore di testo. Per le ordinamento numeriche deve essere specificato un valore numerico. Nessuno

Ordinamento in base a campi con più valori

Quando ordini in base a un campo con più valori di un determinato tipo, viene utilizzato solo il primo valore assegnato al campo. Ad esempio, prendiamo in considerazione due documenti, DocA e DocB, che hanno entrambi un campo di testo denominato "colore". Al campo "colore" del documento A vengono assegnati due valori nell'ordine (rosso, blu) e due valori al documento B nell'ordine (verde, rosso). Quando esegui un ordinamento specificando il campo di testo "color", DocA viene ordinata in base al valore "red" e DocB sul valore "green". Gli altri valori di campo non vengono utilizzati nell'ordinamento.

Per ordinare o meno

Se non specifichi alcuna opzione di ordinamento, i risultati di ricerca vengono automaticamente restituiti e ordinati per ranking decrescente. Non c'è limite al numero di documenti che vengono restituiti in questo caso. Se specifichi opzioni di ordinamento, l'ordinamento viene eseguito dopo la selezione di tutti i documenti corrispondenti. Esiste una proprietà esplicita, SortOptions.Limit, che controlla le dimensioni dell'ordinamento. Non puoi mai ordinare più di 10.000 documenti. Il valore predefinito è 1000. Se sono presenti più documenti corrispondenti rispetto al numero specificato da SortOptions.Limit, la ricerca recupera, ordina, e restituisce quel numero limitato. I documenti da ordinare vengono selezionati dall'elenco. di tutti i documenti corrispondenti, in ordine di ranking decrescente. È possibile che una query selezioni più documenti corrispondenti di quelli che puoi ordinare. Se utilizzi opzioni di ordinamento ed è importante recuperare tutti i documenti corrispondenti, devi assicurarti che la query non restituisca più documenti di quelli che puoi ordinare.

Scrittura di espressioni

Le espressioni vengono utilizzate per definire espressioni di campo (impostate nel SearchOptions) e ordina le espressioni, che sono impostato in SortOptions. Sono scritte come stringhe:

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

Le espressioni relative ai campi numerici possono utilizzare gli operatori aritmetici (+, -, *, /) e le funzioni numeriche integrate elencate di seguito. Le espressioni che coinvolgono i campi geopoint possono utilizzare le funzioni geopoint e distanza. Le espressioni per i campi di testo e HTML possono utilizzare la funzione snippet.

Le espressioni possono includere anche i seguenti termini speciali:

Termine Descrizione
_rank La proprietà rank di un documento. Può essere utilizzato nelle espressioni dei campi e nelle espressioni di ordinamento.
_score Il punteggio assegnato a un documento quando includi un elemento Scorer in SortOptions. Questo termine può apparire solo nelle espressioni di ordinamento; non può essere utilizzato nelle espressioni di campo.

Funzioni numeriche

Le espressioni per definire i valori numerici per FieldExpressions e SortExpressions possono utilizzare queste funzioni integrate. Gli argomenti devono essere numeri, nomi di campi o espressioni che utilizzano numeri e nomi di campi.

Funzione Descrizione Esempio
max Restituisce il più grande dei suoi argomenti. max(recommended_retail_price, discount_price, wholesale_price)
min Restituisce il più piccolo dei suoi argomenti. min(height, width, length)
log Restituisce il logaritmo naturale. log(x)
abs Restituisce il valore assoluto. abs(x)
pow Richiede due argomenti numerici. Il richiamo pow(x, y) calcola il valore di x elevato alla potenza di y. pow(x, 2)
count Prende un nome di campo come argomento. Restituisce il numero di campi nel documento con quel nome. Ricorda che un documento può contenere più campi di tipi diversi con lo stesso nome. Nota: count può essere utilizzato solo in FieldExpressions. Non può essere visualizzato in SortExpressions. count(user)

Funzioni punto geografico

Queste funzioni possono essere utilizzate per le espressioni che coinvolgono i campi geopoint.

Funzione Descrizione Esempio
geopoint Definisce un punto geografico in base a latitudine e longitudine. geopoint(-31.3, 151.4)
distance Calcola la distanza in metri tra due geopoint. Tieni presente che uno dei due argomenti può essere il nome di un campo geopoint o un'invocazione della funzione geopoint. Tuttavia, un solo argomento può essere il nome di un campo. distance(geopoint(23, 134), store_location)

Snippet

Uno snippet è un frammento di un campo di testo che corrisponde a una stringa di query e include il testo circostante. Gli snippet vengono creati chiamando la funzione snippet:

snippet(query, body, [max_chars])

query
Una stringa di query tra virgolette che specifica il testo da trovare nel campo.
body
Il nome di un campo di testo, HTML o atom.
max_chars
Il numero massimo di caratteri da restituire nello snippet. Questo è facoltativo; il valore predefinito è 160 caratteri.

La funzione restituisce una stringa HTML. La stringa contiene uno snippet del corpo , con il testo corrispondente alla query in grassetto.