Quando chiami il metodo Index.Search
utilizzando solo una stringa di query, i risultati vengono restituiti in base alle opzioni di query predefinite:
- I documenti vengono restituiti 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 dello
struct SearchOptions
come argomento per Search
per modificare queste opzioni.
Lo struct SearchOptions
consente di specificare quanti documenti
restituire in una volta. Consente inoltre di personalizzare i contenuti dei
documenti recuperati. Puoi richiedere solo identificatori dei documenti o richiedere che i documenti contengano solo un sottoinsieme dei relativi campi. Puoi anche creare campi personalizzati nei documenti recuperati utilizzando espressioni di campo (campi con valori derivati da altri campi del documento).
Oltre alle opzioni di query, lo struct "SearchOptions" può anche includere un'istanza dello struct SortOptions
. Le opzioni di ordinamento ti consentono di cambiare l'ordinamento dei risultati e di ordinare i risultati in base a più chiavi.
SearchOptions
Queste proprietà controllano quanti risultati vengono restituiti e in quale ordine. Le opzioni di offset e cursore, che si escludono a vicenda, supportano l'impaginazione. 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 |
Al posto di un offset, puoi utilizzare un cursore per recuperare gruppi di documenti in ordine. Viene aggiornato un cursore quando questo viene trasferito all'interno e all'esterno di query consecutive, in modo che ogni nuova ricerca continui a partire dalla fine della precedente. Cursore e offset sono illustrati nella pagina Riferimento go search. | 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 il proprio insieme di proprietà, descritte di seguito. |
Nullo. Ordina per decrescere il ranking del documento. | - |
Queste proprietà controllano quali campi dei documenti vengono visualizzati nei risultati.
Proprietà | Descrizione | Predefinito |
---|---|---|
IDsOnly |
Impostala su true o false . Quando true , i documenti restituiti nei risultati conterranno solo ID, nessun campo. |
false (restituisci tutti i campi). |
Fields |
Specifica quali campi del documento 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 aggiunte a ciascun documento restituito nei risultati della ricerca. Questi campi vengono aggiunti alla proprietà delle espressioni del documento. Il valore del campo viene specificato scrivendo un'espressione che potrebbe includere uno o più campi del documento. | Nessuna esperienza |
SortOptions
Le proprietà di SortOptions
controllano l'ordine e il punteggio dei risultati
di ricerca.
Proprietà | Descrizione | Predefinito |
---|---|---|
Expressions |
Una sezione di SortExpressions che rappresenta una sorta di documenti multidimensionali. |
Nessuna esperienza |
Scorer |
Un elemento Scorer facoltativo. Se presente, ai documenti verrà assegnato un punteggio in base alla frequenza dei termini di ricerca. Il punteggio sarà disponibile nel campo _score . I documenti con il punteggio possono essere costosi (sia nelle operazioni fatturabili che nei tempi di esecuzione) e possono rallentare le ricerche. Usa il punteggio con parsimonia. |
Nessuna esperienza |
Limit |
Numero massimo di oggetti a cui assegnare un punteggio e/o ordinare. Non può essere superiore a 10.000. | 1000 |
Ordinamento in base a più chiavi
Puoi ordinare i risultati di ricerca in base a più chiavi di ordinamento. Ogni chiave può essere un semplice nome di campo o un valore calcolato da più campi. Questa espressione viene creata in base alle regole riportate nella sezione successiva.
Un elemento SortExpression
definisce anche la direzione dell'ordinamento e una coppia chiave-valore predefinita da utilizzare se non è possibile calcolare l'espressione 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. | Nessuna esperienza |
Reverse |
Se true inverti l'ordinamento dei risultati di ricerca in modo che vengano visualizzati in ordine crescente (anziché in ordine decrescente). |
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 l'ordinamento del testo. Per gli ordinamenti numerici è necessario specificare un valore numerico. | Nessuna esperienza |
Ordinamento in base a 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, considera due documenti, DocA e DocB, che hanno entrambi un campo di testo denominato "color". Due valori vengono assegnati al campo "colore" di DocA nell'ordine (rosso, blu) e due valori a DocB nell'ordine (verde, rosso). Quando esegui un ordinamento che specifica il campo di testo "color", DocA viene ordinata in base al valore "red" e DocB in base al valore "green". Gli altri valori dei campi non vengono utilizzati nell'ordinamento.
Per ordinare o non ordinare
Se non specifichi alcuna opzione di ordinamento, i risultati di ricerca vengono automaticamente
restituiti in ordine decrescente. Non c'è limite al numero di documenti
restituiti in questo caso. Se specifichi le opzioni di ordinamento, l'ordinamento viene eseguito dopo che sono stati selezionati tutti i documenti corrispondenti. Esiste una proprietà esplicita, SortOptions.Limit
, che controlla la dimensione dell'ordinamento. Non puoi mai ordinare più di 10.000 documenti, il valore predefinito è 1.000. Se sono presenti più documenti corrispondenti rispetto al numero specificato da SortOptions.Limit
, la ricerca recupera, ordina e restituisce solo quel numero limitato. Seleziona i documenti da ordinare dall'elenco
di tutti i documenti corrispondenti, in ordine decrescente. È possibile che una query selezioni più documenti corrispondenti di quanti tu possa ordinare. Se utilizzi le opzioni di ordinamento ed è importante recuperare ogni documento corrispondente, devi cercare di assicurarti che la query non restituisca più documenti di quanti puoi ordinare.
Scrittura di espressioni
Le espressioni vengono utilizzate per definire le espressioni di campo (impostate in
SearchOptions
) e ordinare le espressioni
impostate 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 integrate elencate di seguito. Le espressioni che coinvolgono i campi di geopoint possono utilizzare le funzioni di 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 |
Una proprietà rank di un documento. Può essere utilizzata nelle espressioni di campo e di ordinamento. |
_score |
Il punteggio assegnato a un documento quando includi un elemento Scorer in SortOptions . Questo termine può essere visualizzato solo nelle espressioni di ordinamento; non può essere utilizzato nelle espressioni di campo. |
Funzioni numeriche
Le espressioni per definire 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 maggiore dei suoi argomenti. | max(recommended_retail_price, discount_price, wholesale_price) |
min |
Restituisce il più piccolo degli argomenti. | min(height, width, length) |
log |
Restituisce il logaritmo naturale. | log(x) |
abs |
Restituisce il valore assoluto. | abs(x) |
pow |
Prende due argomenti numerici. La chiamata pow(x, y) calcola il valore di x elevato alla potenza 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 tipo diverso con lo stesso nome. Nota: count può essere utilizzato solo in FieldExpressions . Non può comparire in SortExpressions . |
count(user) |
Funzioni geo-point
Queste funzioni possono essere utilizzate per espressioni che riguardano i campi di punti geografici.
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 punti geografici. Nota che uno dei due argomenti può essere il nome di un campo di punto geografico o la chiamata della funzione di punto geografico. Tuttavia, un solo argomento può essere un nome 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 argomento è facoltativo; il valore predefinito è 160 caratteri.
La funzione restituisce una stringa HTML. La stringa contiene uno snippet del valore del campo body, con il testo corrispondente alla query in grassetto.