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 ordinati in ordine decrescente
- I documenti vengono restituiti in gruppi di 20 alla volta
- I documenti recuperati contengono tutti i campi originali
Puoi utilizzare un'istanza
struct SearchOptions
come argomento per Search
per modificare queste opzioni.
La struct SearchOptions
consente di specificare il numero di documenti da restituire alla volta. Ti permette anche di personalizzare i contenuti dei file recuperati
documenti. Puoi richiedere solo gli identificatori dei documenti o chiedere che i documenti contengano solo un sottoinsieme dei relativi campi. Puoi anche creare campi personalizzati nella
documenti recuperati utilizzando
espressioni di campo (campi con valori
derivati da altri campi del documento).
Oltre alle opzioni di query,
struct "SearchOptions"
può anche includere un'istanza di SortOptions
struct. Le opzioni di ordinamento ti consentono di
cambiare l'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 |
È possibile utilizzare un cursore al posto di un offset per recuperare gruppi di documenti in ordine. 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. Cursore e offset sono trattati nella pagina di riferimento Cerca con Go. | Nullo. 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 un proprio insieme di proprietà, descritto 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 |
Da impostare 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. | Restituisce 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 elemento 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 per più chiavi
Puoi ordinare i risultati della ricerca in base a più chiavi di ordinamento. Ogni chiave può essere un semplice o un valore calcolato da più campi. Questa espressione viene creata in base alle regole sezione successiva.
Un elemento SortExpression
definisce anche la direzione dell'ordinamento e una chiave predefinita
da utilizzare se non è possibile calcolare l'espressione per un documento. Ecco il
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 |
Il valore predefinito dell'espressione, se non è presente alcun campo e non può essere calcolato per un documento. È necessario specificare un valore di testo per gli ordinamenti testuali. Per le ordinamento numeriche deve essere specificato un valore numerico. | Nessuno |
Ordinamento in base ai campi a più valori
Quando ordini un campo a 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 "colore" DocA vengono assegnati due valori nell'ordine (rosso, blu) e due valori in DocB nell'ordine (verde, rosso). Quando esegui un ordinamento specificando il campo di testo "color", DocA viene ordinato in base al valore "red" e DocB sul valore "green". Gli altri valori degli altri campi non vengono utilizzati nell'ordinamento.
Come ordinare o meno
Se non specifichi opzioni di ordinamento, i risultati di ricerca vengono visualizzati automaticamente in ordine 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. C'è un
proprietà esplicita,
SortOptions.Limit
, che controlla le dimensioni
di questo tipo. 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 potrebbe selezionare più documenti corrispondenti di quanti tu sia possibile 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 che coinvolgono i campi numerici possono utilizzare gli operatori aritmetici (+, -, *, /) e le funzioni numeriche predefinite 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 utilizzata nelle espressioni di campo 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 campo o espressioni che utilizzano numeri e nomi di campo.
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 |
Prende due argomenti numerici. Il richiamo pow(x, y) calcola il valore di x elevato alla potenza di y. | pow(x, 2) |
count |
Prende il nome di un 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 dei punti geografici
Queste funzioni possono essere utilizzate per espressioni che coinvolgono i campi di punti geografici.
Funzione | Descrizione | Esempio |
---|---|---|
geopoint |
Definisce un punto geografico a partire da una latitudine e una longitudine. | geopoint(-31.3, 151.4) |
distance |
Calcola la distanza in metri tra due punti geografici. Tieni presente che uno dei due argomenti può essere il nome di un campo di punti geografici o una chiamata della funzione di punto geografico. 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.