

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Creazione di query composte in Amazon CloudSearch
<a name="searching-compound-queries"></a>

Puoi utilizzare il parser delle query strutturate per combinare le espressioni di corrispondenza utilizzando gli operatori booleani `and`, `or` e `not`. Per selezionare il parser delle query strutturate, includi `q.parser=structured` nella query. Gli operatori delle query strutturate vengono specificati come operatori *prefisso*. La sintassi è:
+ `(and boost=N EXPRESSION1 EXPRESSION2 ... EXPRESSIONn)`
+ `(or boost=N EXPRESSION1 EXPRESSION2 ... EXPRESSIONn)`
+ `(not boost=N EXPRESSION)`

Ad esempio, nella seguente query vengono rilevati tutti i film nel set di dati di esempio contenente *star* nel titolo e Harrison Ford o William Shatner appaiono nel campo `actors`, ma non Zachary Quinto.

```
(and title:'star' (or actors:'Harrison Ford' actors:'William Shatner')(not actors:'Zachary Quinto'))
```

Quando utilizzi gli operatori delle query strutturate, devi specificare il nome dell'operatore, le relative opzioni e l'espressione di corrispondenza a cui viene applicato l'operatore, `(OPERATOR OPTIONS EXPRESSION)`. L'espressione di corrispondenza può essere una stringa di testo semplice oppure una sottoclausola della query composta. Qualsiasi opzione deve essere specificata prima dei termini. Ad esempio `(and (not field=genres 'Sci-Fi')(or (term field=title boost=2 'star')(term field=plot 'star')))`.

Le parentesi controllano l'ordine di valutazione delle espressioni. Se è racchiusa tra parentesi, un'espressione viene valutata per prima, quindi il valore risultante viene utilizzato nella valutazione della parte rimanente della query composta. 

**Importante**  
I caratteri speciali nella stringa di query devono essere codificati in formato URL. Ad esempio, devi codificare l'`=`operatore in una query strutturata come`%3D`:). `(term+field%3Dtitle+'star'` Amazon CloudSearch restituisce un `InvalidQueryString` errore se i caratteri speciali non sono codificati nell'URL. Per un riferimento completo delle codifiche nel formato URL, consultare il documento [HTML URL Encoding Reference](http://www.w3schools.com/tags/ref_urlencode.asp) di W3C.

Ad esempio, la query seguente ricerca nel campo `title` la locuzione `star wars` ed esclude le corrispondenze con un valore inferiore a 2000 nel campo `year`. 

```
(and (phrase field='title' 'star wars') (not (range field=year {,2000})))
```

Per inviare questa richiesta di ricerca, devi codificare la stringa della query e specificare il parser di query `structured` con il parametro `q.parser`.

```
http://search-movies-rr2f34ofg56xneuemujamut52i.us-east-1.cloudsearch.
amazonaws.com/2013-01-01/search?q=(and+(phrase+field='title'+'star wars')+(not+(range+field%3Dyear+{,2000})))&q.parser=structured
```

La sintassi delle query strutturate ti consente di combinare le ricerche rispetto a più campi. Se non specifichi un campo, la ricerca verrà effettuata in tutti i campi `text` e `text-array`. Ad esempio, la query seguente consente di ricercare in tutti i campi `text` e `text-array` il termine *star* e di escludere i documenti che contengono *Zachary Quinto* nel campo `actors`.

```
(and 'star' (not actors:'Zachary Quinto'))
```

Puoi specificare un valore `boost` (potenziamento) per aumentare l'importanza di un'espressione in una query composta rispetto alle altre. Il valore boost aumenta i punteggi dei documenti corrispondenti. Ad esempio, la seguente query aumenta le corrispondenze del termine *star* se presenti nel campo `title` anziché nel campo `description`.

```
(and (range field=year [2013,}) (or (term field=title boost=2 'star') (term field=plot 'star')) 
```

I valori boost devono essere maggiori di zero.

Oltre a`and`, and `or``not`, la sintassi di ricerca CloudSearch strutturata di Amazon supporta diversi operatori specializzati:
+ `matchall`—Corrisponde a tutti i documenti del dominio. Sintassi: `matchall`.
+ `near`—Supporta interrogazioni con frasi sciatte. Il valore `distance` specifica il numero massimo di parole che possono separare le parole nella locuzione; ad esempio, `(near field='plot' distance=4 'naval mutiny demonstration')`. Utilizza l'operatore `near` per consentire il rilevamento delle corrispondenze se i termini specificati si trovano vicini, ma non sono adiacenti. Per ulteriori informazioni sulle ricerche di frasi simili, consultare [Ricerca di frasi](searching-text.md#searching-text-phrases). Sintassi: `(near field=FIELD distance=N boost=N 'STRING')`.
+ `phrase`—Cerca una frase in uno `text` o `text-array` più campi, ad esempio. `(phrase field="title" 'teenage mutant ninja')` Supporta il boosting dei documenti che corrispondono all'espressione. Per ulteriori informazioni sulle ricerche di frasi, consultare [Ricerca di frasi](searching-text.md#searching-text-phrases). Sintassi: `(phrase field=FIELD boost=N 'STRING')`.
+ `prefix`—Cerca in un campo di testo, una matrice di testo, una matrice letterale o una matrice letterale il prefisso specificato seguito da zero o più caratteri; ad esempio,. `(prefix field='title' 'wait')` Supporta il boosting dei documenti che corrispondono all'espressione. Per ulteriori informazioni sulle ricerche di prefissi, consultare [Ricerca di prefissi](searching-text.md#searching-text-prefixes). Sintassi: `(prefix field=FIELD boost=N 'STRING')`.
+ `range`—Cerca un intervallo di valori in un campo numerico, ad esempio:. `(range field=year [2000,2013])` Per ulteriori informazioni sulle ricerche di intervalli, consultare [Ricerca di un intervallo di valori](searching-ranges.md). Sintassi: `(range field=FIELD boost=N RANGE)`.
+ `term`—Cerca un singolo termine o valore in qualsiasi campo; per esempio:. `(and (term field=title 'star')(term field=year 1977))` Sintassi: `(term field=FIELD boost=N 'STRING'|VALUE)`.

Per ulteriori informazioni sulla ricerca di tipi particolari di dati, consultare le sezioni seguenti. Per ulteriori informazioni sulla sintassi di ricerca strutturata, consultare [Sintassi di ricerca strutturata](search-api.md#structured-search-syntax). 