In questa pagina vengono descritti i filtri e l'ordinamento con la ricerca.
Tutorial sui filtri
Questo tutorial illustra la funzionalità di filtro. Consente di perfezionare le richieste di ricerca in base alle tue esigenze o a quelle del tuo cliente. Puoi filtrare in base a uno o più campi, in base a campi di testo o numerici oppure a entrambi. Puoi utilizzare un linguaggio di espressione per creare un predicato per ogni campo o combinare espressioni diverse utilizzando operatori logici. Ad esempio, un acquirente che cerca scarpe può utilizzare i filtri per restringere la ricerca al brand e al colore che preferisce.
Per seguire le indicazioni dettagliate per questa attività direttamente nell'editor di Cloud Shell, fai clic su Aiuto:
Tutorial sull'ordinamento
Questo tutorial mostra come ordinare gli articoli in una risposta di ricerca. Quando un utente finale cerca un prodotto sul tuo sito, gli vengono mostrati i risultati ordinati in base a più campi. Ad esempio, un utente sta cercando un abito con il prezzo e lo sconto migliori. Qui sono presenti più campi relativi a prezzo e sconto. L'utente vedrà gli abiti ordinati per prezzo e gli abiti con lo stesso prezzo ordinati per sconto.
Per seguire le indicazioni dettagliate per questa attività direttamente nell'editor di Cloud Shell, fai clic su Aiuto:
Set di dati di esempio
Questa pagina utilizza il seguente set di dati come esempio. Sono inclusi solo i campi necessari per l'esempio.
Filtro
Java
La sintassi delle espressioni di filtro può essere riepilogata come segue EBNF:
# A single expression or multiple expressions that are joined by "AND" or "OR". filter = expression, { " AND " | "OR", expression }; # Expressions can be prefixed with "-" or "NOT" to express a negation. expression = [ "-" | "NOT " ], # A parenthetical expression. | "(", expression, ")" # A simple expression applying to a text field. # Function "ANY" returns true if the field contains any of the literals. ( text_field, ":", "ANY", "(", literal, { ",", literal }, ")" # A simple expression applying to a numerical field. Function "IN" returns true # if a field value is within the range. By default, lower_bound is inclusive and # upper_bound is exclusive. | numerical_field, ":", "IN", "(", lower_bound, ",", upper_bound, ")" # A simple expression that applies to a numerical field and compares with a double value. | numerical_field, comparison, double ); # A lower_bound is either a double or "*", which represents negative infinity. # Explicitly specify inclusive bound with the character 'i' or exclusive bound # with the character 'e'. lower_bound = ( double, [ "e" | "i" ] ) | "*"; # An upper_bound is either a double or "*", which represents infinity. # Explicitly specify inclusive bound with the character 'i' or exclusive bound # with the character 'e'. upper_bound = ( double, [ "e" | "i" ] ) | "*"; # Supported comparison operators. comparison = "<=" | "<" | ">=" | ">" | "="; # A literal is any double quoted string. You must escape backslash (\) and # quote (") characters. literal = double quoted string; text_field = see the table below; numerical_field = see the table below;
I campi di testo supportati sono riassunti nella seguente tabella.
campo | description |
---|---|
"ID prodotto" | L'ID prodotto (l'ultimo segmento di Product.name). |
"brand" | Il valore Product.brands. |
"categorie" | Le categorie di prodotto. |
"generi" | Il segmento Audience.genders. |
"ageGroups" | Il segmento Audience.age_groups. |
"disponibilità" | Il valore Product.availability. Il valore è uno dei seguenti: "IN_STOCK", "OUT_OF_STOCK", PREORDER", "BACKORDER". |
"colorFamiglie" | Il campo ColorInfo.color_families. |
"colori" | Il file ColorInfo.colors. |
"dimensioni" | Il valore Product.sizes. |
"materiali" | Il campo Product.materials. |
"pattern" | Il valore Product.patterns. |
"conditions" | Le condizioni del prodotto. |
"attributes.key" | L'attributo testuale personalizzato nell'oggetto Product. La chiave può essere qualsiasi chiave nella mappa Product.attributes, se i valori degli attributi sono testuali. |
"pickupInStore" | FulfillmentInfo.place_id per il tipo "pickup-in-store". |
"shipToStore" | Il campo FulfillmentInfo.place_ids per il tipo "ship-to-store". |
"sameDayDelivery" | Il FulfillmentInfo.place_ids per il tipo "same-day-delivery". |
"nextDayDelivery" | Il campo FulfillmentInfo.place_ids per il tipo "next-day-delivery". |
"customFulfillment1" | Il FulfillmentInfo.place_ids per il tipo "custom-type-1". |
"customFulfillment2" | Il FulfillmentInfo.place_ids per il tipo "custom-type-2". |
"customFulfillment3" | Il FulfillmentInfo.place_ids per il tipo "custom-type-3". |
"customFulfillment4" | Il FulfillmentInfo.place_ids per il tipo "custom-type-4". |
"customFulfillment5" | Il FulfillmentInfo.place_ids per il tipo "custom-type-5". |
"inventory(place_id,attributes.key)" | L'attributo testuale personalizzato nello spazio pubblicitario. |
I campi numerici supportati sono riassunti nella seguente tabella.
campo | description |
---|---|
"price" | L'elemento PriceInfo.price. |
"discount" | Lo sconto. Calcolato in base a (prezzo_originale - prezzo) / prezzo_originale. |
"valutazione" | Il parametro Rating.average_rating. |
"ratingCount" | Il parametro Rating.rating_count. |
"attributes.key" | L'attributo personalizzato numerico nell'oggetto Product. La chiave può essere qualsiasi chiave nella mappa Product.attributes, se i valori degli attributi sono numerici. |
"inventory(place_id,price)" | Il prezzo dell'inventario. |
"inventory(place_id,original_price)" | Il prezzo originale dell'inventario. |
"inventory(place_id,attributes.key)" | L'attributo numerico personalizzato nello spazio pubblicitario. |
Sono consentite al massimo 10 congiunzioni o disgiunzioni nidificate.
Ad esempio, per cercare rispettivamente un prodotto Google nelle seguenti situazioni, potresti impostare query
come "Google" e impostare filter
come valori
mostrati nella seguente tabella:
scenario | filtro |
---|---|
non è un accessorio Pixel | "NOT categorie: QUALSIASI(\"Pixel > accessori in primo piano\")" |
"meno di 100 dollari" | "prezzo: IN(*, 100.0e)" |
"Speaker Nest a meno di 80 dollari" | "(categorie: Any(\"Nest > speaker e display\")) AND (price: IN(80.0i, *))" |
Ordina
Java
I campi ordinabili supportati sono riepilogati nella tabella seguente.
campo | description |
---|---|
"ID prodotto" | L'ID prodotto (l'ultimo segmento di Product.name). |
"titolo" | Il titolo del prodotto. |
"brand" | Il valore Product.brands. |
"categorie" | Le categorie di prodotto. |
"generi" | Il segmento Audience.genders. |
"ageGroups" | Il segmento Audience.age_groups. |
"price" | L'elemento PriceInfo.price. |
"discount" | Lo sconto. Calcolato per (prezzo_originale - prezzo) / prezzo. |
"valutazione" | Il parametro Rating.average_rating. |
"ratingCount" | Il parametro Rating.rating_count. |
"attributes.key" | L'attributo personalizzato nell'oggetto Product. La chiave può essere qualsiasi chiave nella mappa Product.attributes. |
"inventory(place_id,price)" | Il prezzo dell'inventario. |
"inventory(place_id,original_price)" | Il prezzo originale dell'inventario. |
"inventory(place_id,attributes.key)" | L'attributo personalizzato numerico o testuale nello spazio pubblicitario. |
Per impostazione predefinita, l'ordine è crescente. L'ordine decrescente può essere specificato da un suffisso "decrescente", ad esempio "decrescente".
Per un campo numerico con più valori, ad esempio un campo ripetuto o un campo impostato per le varianti dei prodotti, il valore minimo viene utilizzato per ordinare in base all'ordine crescente e il valore massimo per l'ordinamento in ordine decrescente.
L'ordinamento in base a più campi è supportato tramite l'utilizzo di campi separati da virgole in ordine di priorità. I campi con priorità inferiore vengono utilizzati per ordinare elementi con valori uguali per i campi con priorità più elevata. Ad esempio, l'opzione "descritta di classificazione, prezzo" ordina gli elementi con la stessa valutazione in base al prezzo.