Come implementare l'esplorazione in base a facet in Ricerca di AzureHow to implement faceted navigation in Azure Search

L'esplorazione in base a facet è un meccanismo di filtro che consente un'esplorazione drill-down mirata nelle applicazioni di ricerca.Faceted navigation is a filtering mechanism that provides self-directed drilldown navigation in search applications. Il termine "esplorazione in base a facet" può essere poco noto, ma probabilmente è già stato usato in precedenza.The term 'faceted navigation' may be unfamiliar, but you've probably used it before. Come illustrato nell'esempio seguente, l'esplorazione in base a facet non è rappresentata dalle categorie usate per filtrare i risultati.As the following example shows, faceted navigation is nothing more than the categories used to filter results.

Job Portal Demo di Ricerca di Azure

L'esplorazione in base a facet è un punto di partenza alternativo per la ricerca.Faceted navigation is an alternative entry point to search. Offre una valida alternativa all'immissione manuale di espressioni di ricerca complesse.It offers a convenient alternative to typing complex search expressions by hand. I facet consentono di trovare ciò che si sta cercando con una percentuale di successo accertata.Facets can help you find what you're looking for, while ensuring that you don’t get zero results. Per gli sviluppatori i facet consentono di esporre i criteri di ricerca più utili per lo spostamento del corpo di ricerca.As a developer, facets let you expose the most useful search criteria for navigating your search corpus. Nelle applicazioni di vendita online, l'esplorazione in base a facet si basa spesso sulle marche, sui reparti (scarpe per bambini), sulla taglia, sul prezzo, sulla popolarità e sulle classificazioni.In online retail applications, faceted navigation is often built over brands, departments (kid’s shoes), size, price, popularity, and ratings.

L'implementazione dell'esplorazione in base a facet si distingue tra le tecnologie di ricerca.Implementing faceted navigation differs across search technologies. Nella Ricerca di Azure, l'esplorazione in base a facet viene creata in fase di query, usando campi attribuiti precedenti nello schema.In Azure Search, faceted navigation is built at query time, using fields that you previously attributed in your schema.

  • Le query compilate dall'applicazione devono consentire l'invio dei parametri di query facet per ottenere i valori di filtro facet disponibili per il set di risultati dei documenti.In the queries that your application builds, a query must send facet query parameters to get the available facet filter values for that document result set.

  • Per ridurre effettivamente il set di risultati dei risultati, l'applicazione deve applicare anche un'espressione $filter.To actually trim the document result set, the application must also apply a $filter expression.

Nello sviluppo di applicazioni la scrittura di codice che crea query costituisce la maggior parte del lavoro.In your application development, writing code that constructs queries constitutes the bulk of the work. Molti dei comportamenti dell'applicazione previsti per l'esplorazione in base a facet vengono forniti dal servizio, inclusi il supporto predefinito per la definizione degli intervalli e il recupero dei conteggi relativi ai risultati di facet.Many of the application behaviors that you would expect from faceted navigation are provided by the service, including built-in support for defining ranges and getting counts for facet results. Il servizio include anche valori predefiniti appropriati che consentono di evitare le strutture di spostamento ingombranti.The service also includes sensible defaults that help you avoid unwieldy navigation structures.

Demo e codice di esempioSample code and demo

Questo articolo usa un portale di ricerca dei processi come esempio.This article uses a job search portal as an example. L'esempio viene implementato come applicazione MVC ASP.NET.The example is implemented as an ASP.NET MVC application.

IntroduzioneGet started

Se non si ha familiarità con lo sviluppo di funzionalità di ricerca, per comprendere l'esplorazione in base a facet, tenere presente che mostra le diverse possibilità di ricerca autodeterminata.If you're new to search development, the best way to think of faceted navigation is that it shows the possibilities for self-directed search. Si tratta di un tipo di esperienza di ricerca drill-down, basata su filtri predefiniti usati per limitare rapidamente i risultati di ricerca tramite semplici azioni in un solo clic.It’s a type of drill-down search experience, based on predefined filters, used for quickly narrowing down search results through point-and-click actions.

Modello di interazioneInteraction model

L'esperienza di ricerca dell'esplorazione in base a facet è iterativa. Pertanto, è opportuno iniziare con il concepirlo come una sequenza di query create in risposta ad azioni dell'utente.The search experience for faceted navigation is iterative, so let’s start by understanding it as a sequence of queries that unfold in response to user actions.

Il punto di partenza è una pagina dell'applicazione che consente un'esplorazione in base a facet, in genere sul perimetro.The starting point is an application page that provides faceted navigation, typically placed on the periphery. L'esplorazione in base a facet è spesso una struttura ad albero, con caselle di controllo per ogni valore o testo selezionabile.Faceted navigation is often a tree structure, with checkboxes for each value, or clickable text.

  1. Una query inviata a Ricerca di Azure specifica la struttura dell'esplorazione in base a facet tramite uno o più parametri di query del facet.A query sent to Azure Search specifies the faceted navigation structure via one or more facet query parameters. Ad esempio, la query potrebbe includere facet=Rating, ad esempio con l’opzione :values o :sort per specificare ulteriormente la presentazione.For instance, the query might include facet=Rating, perhaps with a :values or :sort option to further refine the presentation.
  2. Il livello di presentazione consente di eseguire il rendering di una pagina di ricerca che permette l'esplorazione in base ai facet specificati nella richiesta.The presentation layer renders a search page that provides faceted navigation, using the facets specified on the request.
  3. A fronte di una struttura di esplorazione in base a facet che include la classificazione, si fa clic su "4" per indicare che devono essere visualizzati solo i prodotti con una valutazione pari a 4 stelle o superiore.Given a faceted navigation structure that includes Rating, you click "4" to indicate that only products with a rating of 4 or higher should be shown.
  4. In risposta, l'applicazione invia una query che include $filter=Rating ge 4In response, the application sends a query that includes $filter=Rating ge 4
  5. Il livello di presentazione aggiorna la pagina con un set di risultati ridotto, contenente solo gli elementi che soddisfano i nuovi criteri (in questo caso, i prodotti valutati con 4 stelle e superiore).The presentation layer updates the page, showing a reduced result set, containing just those items that satisfy the new criteria (in this case, products rated 4 and up).

Il facet è un parametro di query, da non confondere con l'input della query.A facet is a query parameter, but do not confuse it with query input. Non viene mai usato come criterio di selezione in una query.It is never used as selection criteria in a query. Al contrario, occorre concepire i parametri di query di un facet come input per la struttura di navigazione che viene restituita nella risposta.Instead, think of facet query parameters as inputs to the navigation structure that comes back in the response. Per ogni parametro di query del facet fornito, Ricerca di Azure restituisce quanti documenti sono presenti nei risultati parziali per ogni valore del facet.For each facet query parameter you provide, Azure Search evaluates how many documents are in the partial results for each facet value.

Si noti il $filter nel passaggio 4.Notice the $filter in step 4. Il filtro è un aspetto importante dell'esplorazione in base a facet.The filter is an important aspect of faceted navigation. Sebbene facet e filtri siano indipendenti nell'API, sono necessari entrambi per offrire l'esperienza desiderata.Although facets and filters are independent in the API, you need both to deliver the experience you intend.

Schema progettuale di appApp design pattern

Nel codice dell'applicazione, il modello consiste nell'usare parametri di query di facet per restituire la struttura di navigazione in base a facet con i risultati di facet, oltre a un'espressione $filter.In application code, the pattern is to use facet query parameters to return the faceted navigation structure along with facet results, plus a $filter expression. L'espressione filtro gestisce l'evento clic sul valore del facet.The filter expression handles the click event on the facet value. L'espressione $filter deve essere considerata come il codice alla base della riduzione effettiva dei risultati della ricerca restituiti al livello di presentazione.Think of the $filter expression as the code behind the actual trimming of search results returned to the presentation layer. A fronte di un facet di colori, la selezione del colore rosso viene implementata tramite un'espressione $filter che consente di selezionare solo gli elementi di colore rosso.Given a Colors facet, clicking the color Red is implemented through a $filter expression that selects only those items that have a color of red.

Nozioni di base sulle queryQuery basics

In Ricerca di Azure una richiesta viene specificata tramite uno o più parametri di query (vedere Eseguire ricerche nei documenti per una descrizione di ciascuno di essi).In Azure Search, a request is specified through one or more query parameters (see Search Documents for a description of each one). Nessuno dei parametri di query è obbligatorio, ma è necessario disporre di almeno di uno affinché una query sia valida.None of the query parameters are required, but you must have at least one in order for a query to be valid.

La precisione, interpretata come la possibilità di filtrare i riscontri irrilevanti, avviene attraverso una o entrambe queste espressioni:Precision, understood as the ability to filter out irrelevant hits, is achieved through one or both of these expressions:

  • ricerca =search=
    Il valore di questo parametro rappresenta l'espressione di ricerca.The value of this parameter constitutes the search expression. Potrebbe essere una singola parte di testo o un'espressione di ricerca complessa che include più termini e operatori.It might be a single piece of text, or a complex search expression that includes multiple terms and operators. Nel server un'espressione di ricerca viene usata per la ricerca full-text, per l'esecuzione di query su campi disponibili per la ricerca nell'indice di termini corrispondenti, per la restituzione dei risultati in ordine di classificazione.On the server, a search expression is used for full-text search, querying searchable fields in the index for matching terms, returning results in rank order. Se si imposta search su null, l'esecuzione della query va oltre l'intero indice (ovvero, search=*).If you set search to null, query execution is over the entire index (that is, search=*). In questo caso, gli altri elementi della query, ad esempio $filter o un profilo di punteggio, sono i fattori primari che determinano quali documenti vengono restituiti ($filter) e in quale ordine (scoringProfile o $orderby).In this case, other elements of the query, such as a $filter or scoring profile, are the primary factors affecting which documents are returned ($filter) and in what order (scoringProfile or $orderby).

  • $filter=$filter=
    Un filtro è un meccanismo potente per limitare le dimensioni dei risultati della ricerca in base ai valori degli attributi del documento specifico.A filter is a powerful mechanism for limiting the size of search results based on the values of specific document attributes. Viene prima valutato un $filter , seguito dalla logica di facet che genera i valori disponibili e i conteggi corrispondenti per ciascun valore.A $filter is evaluated first, followed by faceting logic that generates the available values and corresponding counts for each value

Le espressioni di ricerca complesse comportano una riduzione delle prestazioni della query.Complex search expressions decrease the performance of the query. Ove possibile, usare le espressioni di filtro ben strutturate per aumentare la precisione e migliorare le prestazioni delle query.Where possible, use well-constructed filter expressions to increase precision and improve query performance.

Per comprendere meglio in che modo un filtro aggiunge maggiore precisione, confrontare un'espressione di ricerca complessa che includa un'espressione di filtro:To better understand how a filter adds more precision, compare a complex search expression to one that includes a filter expression:

  • GET /indexes/hotel/docs?search=lodging budget +Seattle –motel +parking
  • GET /indexes/hotel/docs?search=lodging&$filter=City eq ‘Seattle’ and Parking and Type ne ‘motel’

Entrambe le query sono valide, ma la seconda è migliore se si stanno cercando non motel con parcheggio in Seattle.Both queries are valid, but the second is superior if you’re looking for non-motels with parking in Seattle.

  • La prima query si basa su tali parole specifiche non indicate nei campi stringa come nome, descrizione e qualsiasi altro campo contenente dati disponibili per la ricerca.The first query relies on those specific words being mentioned or not mentioned in string fields like Name, Description, and any other field containing searchable data.
  • La seconda query consente di cercare le corrispondenze precise sui dati strutturati e probabilmente più accurate.The second query looks for precise matches on structured data and is likely to be much more accurate.

Nelle applicazioni che includono l'esplorazione in base a facet, è necessario assicurarsi che ogni azione dell'utente su una struttura di esplorazione in base a facet sia accompagnata da una restrizione dei risultati della ricerca.In applications that include faceted navigation, make sure that each user action over a faceted navigation structure is accompanied by a narrowing of search results. Per limitare i risultati, usare un'espressione filtro.To narrow results, use a filter expression.

Creare un'app di esplorazione in base a facetBuild a faceted navigation app

Si implementa l'esplorazione in base a facet con Ricerca di Azure nel codice dell'applicazione che crea la richiesta di ricerca.You implement faceted navigation with Azure Search in your application code that builds the search request. L'esplorazione in base a facet si basa su elementi dello schema definiti in precedenza.The faceted navigation relies on elements in your schema that you defined previously.

Predefinito nell'indice di ricerca è l'attributo dell'indice Facetable [true|false] , impostato in campi selezionati per abilitare o disabilitare l'uso in una struttura di esplorazione in base a facet.Predefined in your search index is the Facetable [true|false] index attribute, set on selected fields to enable or disable their use in a faceted navigation structure. Senza "Facetable" = trueun campo non può essere usato nell'esplorazione in base a facet.Without "Facetable" = true, a field cannot be used in facet navigation.

Il livello di presentazione del codice offre l'esperienza dell'utente.The presentation layer in your code provides the user experience. Dovrebbero essere indicate le parti costitutive dell'esplorazione in base a facet, ad esempio l'etichetta, i valori, le caselle di controllo e il conteggio.It should list the constituent parts of the faceted navigation, such as the label, values, check boxes, and the count. L'API REST di Ricerca di Azure è indipendente dalla piattaforma, quindi è possibile usare qualsiasi lingua e la piattaforma desiderata.The Azure Search REST API is platform agnostic, so use whatever language and platform you want. L'aspetto importante consiste nell'includere gli elementi dell'interfaccia utente che supportano l'aggiornamento incrementale, con lo stato dell'interfaccia utente aggiornato man mano che vengono selezionate facet aggiuntive.The important thing is to include UI elements that support incremental refresh, with updated UI state as each additional facet is selected.

In fase di query, il codice dell'applicazione consente di creare una richiesta che include facet=[string], un parametro di richiesta che fornisce i facet per il campo.At query time, your application code creates a request that includes facet=[string], a request parameter that provides the field to facet by. Una query può avere più facet, ad esempio &facet=color&facet=category&facet=rating, ciascuno separato da un carattere e commerciale (&).A query can have multiple facets, such as &facet=color&facet=category&facet=rating, each one separated by an ampersand (&) character.

Il codice dell'applicazione deve inoltre consentire la creazione di un'espressione $filter per gestire gli eventi di selezione nell'esplorazione in base a facet.Application code must also construct a $filter expression to handle the click events in faceted navigation. $filter riduce i risultati della ricerca, usando il valore del facet come criteri di filtro.A $filter reduces the search results, using the facet value as filter criteria.

Ricerca di Azure restituisce i risultati della ricerca in base a uno o più termini immessi, insieme agli aggiornamenti della struttura di esplorazione in base a facet.Azure Search returns the search results, based on one or more terms that you enter, along with updates to the faceted navigation structure. In Ricerca di Azure l'esplorazione in base a facet è una costruzione a livello singolo, con valori di facet, che calcola il numero di risultati trovati per ciascuno di essi.In Azure Search, faceted navigation is a single-level construction, with facet values, and counts of how many results are found for each one.

Nelle sezioni seguenti verrà esaminata più in dettaglio la compilazione di ogni parte.In the following sections, we take a closer look at how to build each part.

Compilare l'indiceBuild the index

L'esplorazione in base a facet viene abilitata per ogni campo singolarmente, tramite l'attributo di indice: "Facetable": true.Faceting is enabled on a field-by-field basis in the index, via this index attribute: "Facetable": true.
Tutti i tipi di campo che possono essere usati in esplorazione in base a facet sono Facetable per impostazione predefinita.All field types that could possibly be used in faceted navigation are Facetable by default. Tali tipi di campo includono Edm.String, Edm.DateTimeOffset e tutti i tipi di campo numerico (ossia, tutti i tipi di campo consentono un'esplorazione in base a facet tranne Edm.GeographyPoint, che non può essere usato nell'esplorazione in base a facet).Such field types include Edm.String, Edm.DateTimeOffset, and all the numeric field types (essentially, all field types are facetable except Edm.GeographyPoint, which can’t be used in faceted navigation).

Durante la creazione di un indice, è consigliabile disattivare in modo esplicito l'esplorazione in base a facet per i campi che non devono mai essere usati come un facet.When building an index, a best practice for faceted navigation is to explicitly turn faceting off for fields that should never be used as a facet. In particolare, i campi stringa per i valori singleton, ad esempio un nome di prodotto o ID, devono essere impostati su "Facetable": false per impedirne l'uso accidentale (e inefficace) nell'esplorazione in base a facet.In particular, string fields for singleton values, such as an ID or product name, should be set to "Facetable": false to prevent their accidental (and ineffective) use in faceted navigation. La disattivazione dell'esplorazione in base a facet, laddove non necessaria, consente di mantenere ridotte le dimensioni dell'indice e in genere di migliorare le prestazioni.Turning faceting off where you don’t need it helps keep the size of the index small, and typically improves performance.

Di seguito è riportata una parte dello schema per l'app di esempio Job Portal Demo, senza alcuni attributi per ridurre le dimensioni:Following is part of the schema for the Job Portal Demo sample app, trimmed of some attributes to reduce the size:

{
  ...
  "name": "nycjobs",
  "fields": [
    { “name”: "id",                 "type": "Edm.String",              "searchable": false, "filterable": false, ... "facetable": false, ... },
    { “name”: "job_id",             "type": "Edm.String",              "searchable": false, "filterable": false, ... "facetable": false, ... },
    { “name”: "agency",              "type": "Edm.String",             "searchable": true,  "filterable": true, ...  "facetable": true, ...  },
    { “name”: "posting_type",        "type": "Edm.String",             "searchable": true,  "filterable": true, ...  "facetable": true, ...  },
    { “name”: "num_of_positions",    "type": "Edm.Int32",              "searchable": false, "filterable": true, ...  "facetable": true, ...  },
    { “name”: "business_title",      "type": "Edm.String",             "searchable": true,  "filterable": true, ...  "facetable": true, ...  },
    { “name”: "civil_service_title", "type": "Edm.String",             "searchable": true,  "filterable": true, ...  "facetable": true, ...  },
    { “name”: "title_code_no",       "type": "Edm.String",             "searchable": true,  "filterable": true, ...  "facetable": true, ...  },
    { “name”: "level",               "type": "Edm.String",             "searchable": true,  "filterable": true, ...  "facetable": true, ...  },
    { “name”: "salary_range_from",   "type": "Edm.Int32",              "searchable": false, "filterable": true, ...  "facetable": true, ...  },
    { “name”: "salary_range_to",     "type": "Edm.Int32",              "searchable": false, "filterable": true, ...  "facetable": true, ...  },
    { “name”: "salary_frequency",    "type": "Edm.String",             "searchable": true,  "filterable": true, ...  "facetable": true, ...  },
    { “name”: "work_location",       "type": "Edm.String",             "searchable": true,  "filterable": true, ...  "facetable": true, ...  },
…
    { “name”: "geo_location",        "type": "Edm.GeographyPoint",     "searchable": false, "filterable": true, ...  "facetable": false, ... },
    { “name”: "tags",                "type": "Collection(Edm.String)", "searchable": true,  "filterable": true, ...  "facetable": true, ...  }
  ],
…
}

Come risulta dallo schema di esempio, Facetable è disattivato per i campi stringa che non devono essere usati come facet, ad esempio i valori ID.As you can see in the sample schema, Facetable is turned off for string fields that shouldn’t be used as facets, such as ID values. La disattivazione dell'esplorazione in base a facet, laddove non necessaria, consente di mantenere ridotte le dimensioni dell'indice e in genere di migliorare le prestazioni.Turning faceting off where you don’t need it helps keep the size of the index small, and typically improves performance.

Suggerimento

Come procedura consigliata, includere il set completo di attributi dell'indice per ogni campo.As a best practice, include the full set of index attributes for each field. Benché Facetable sia attivato per impostazione predefinita per quasi tutti i campi, l'impostazione intenzionale di ogni attributo consentono di valutare le implicazioni di ogni decisione di schema.Although Facetable is on by default for almost all fields, purposely setting each attribute can help you think through the implications of each schema decision.

Controllare i datiCheck the data

La qualità dei dati ha un effetto diretto sulla possibilità che la struttura di esplorazione in base a facet si prospetti come previsto.The quality of your data has a direct effect on whether the faceted navigation structure materializes as you expect it to. Influisce anche sulla facilità di creazione di filtri per ridurre il set di risultati.It also affects the ease of constructing filters to reduce the result set.

Se si desidera effettuare un'esplorazione in base a facet per marca o prezzo, ciascun documento deve contenere i valori relativi a BrandName e ProductPrice che sono validi, coerenti e produttivi come opzione di filtro.If you want to facet by Brand or Price, each document should contain values for BrandName and ProductPrice that are valid, consistent, and productive as a filter option.

Di seguito sono elencati alcuni promemoria di ciò che è necessario eliminare:Here are a few reminders of what to scrub for:

  • Per ogni campo da usare per l'esplorazione in base a facet, è necessario stabilire se contiene valori adatti all'uso come filtri nella ricerca mirata.For every field that you want to facet by, ask yourself whether it contains values that are suitable as filters in self-directed search. I valori devono essere brevi, descrittivi sufficientemente distintivi per offrire una scelta definita tra opzioni concorrenti.The values should be short, descriptive, and sufficiently distinctive to offer a clear choice between competing options.
  • Errori di ortografia o valori quasi corrispondenti.Misspellings or nearly matching values. Se si effettua l'esplorazione in base a facet per Colore e i valori dei campi includono Arancione e Arncione (un errore di ortografia), un'esplorazione in base a facet in base al campo colore comporterebbe la selezione di entrambi.If you facet on Color, and field values include Orange and Ornage (a misspelling), a facet based on the Color field would pick up both.
  • Il testo con maiuscole e minuscole e può inoltre provocare danni all'esplorazione in base a facet con arancione e Arancione visualizzati come due valori diversi.Mixed case text can also wreak havoc in faceted navigation, with orange and Orange appearing as two different values.
  • Le versioni singolari e plurali dello stesso valore possono comportare un facet separato.Single and plural versions of the same value can result in a separate facet for each.

Come si può immaginare, la scrupolosità di preparazione dei dati è un aspetto essenziale dell'esplorazione in base a facet.As you can imagine, diligence in preparing the data is an essential aspect of effective faceted navigation.

Creare l'interfaccia utenteBuild the UI

Partire dal livello di presentazione consente di scoprire i requisiti che è possibile non vengano individuati in caso contrario e di comprendere le funzionalità essenziali per l'esperienza di ricerca.Working back from the presentation layer can help you uncover requirements that might be missed otherwise, and understand which capabilities are essential to the search experience.

In termini di esplorazione in base a facet, la pagina Web o un'applicazione consente di visualizzare la struttura del sito di collaborazione, rileva l'input dell'utente nella pagina e inserisce gli elementi modificati.In terms of faceted navigation, your web or application page displays the faceted navigation structure, detects user input on the page, and inserts the changed elements.

Per le applicazioni Web, viene comunemente usata la tecnologia AJAX nel livello di presentazione, poiché consente di aggiornare le modifiche incrementali.For web applications, AJAX is commonly used in the presentation layer because it allows you to refresh incremental changes. È inoltre possibile usare ASP.NET MVC o qualsiasi altra piattaforma di visualizzazione che può connettersi a un servizio di Ricerca di Azure tramite HTTP.You could also use ASP.NET MVC or any other visualization platform that can connect to an Azure Search service over HTTP. L'applicazione di esempio a cui fa riferimento in questo articolo, Job Portal Demo di Ricerca di Azure, è un'applicazione MVC ASP.NET.The sample application referenced throughout this article -- the Azure Search Job Portal Demo – happens to be an ASP.NET MVC application.

Nell'esempio, l'esplorazione in base a facet viene creata nella pagina di risultati della ricerca.In the sample, faceted navigation is built into the search results page. L'esempio seguente, tratto dal file index.cshtml dell'applicazione di esempio, mostra la struttura HTML dinamica per la visualizzazione dell'esplorazione in base a facet nella pagina dei risultati di ricerca.The following example, taken from the index.cshtml file of the sample application, shows the static HTML structure for displaying faceted navigation on the search results page. L'elenco di facet viene compilato o ricompilato in modo dinamico quando si invia un termine di ricerca oppure si seleziona o deseleziona un facet.The list of facets is built or rebuilt dynamically when you submit a search term, or select or clear a facet.

<div class="widget sidebar-widget jobs-filter-widget">
  <h5 class="widget-title">Filter Results</h5>
    <p id="filterReset"></p>
    <div class="widget-content">

      <h6 id="businessTitleFacetTitle">Business Title</h6>
      <ul class="filter-list" id="business_title_facets">
      </ul>

      <h6>Location</h6>
      <ul class="filter-list" id="posting_type_facets">
      </ul>

      <h6>Posting Type</h6>
      <ul class="filter-list" id="posting_type_facets"></ul>

      <h6>Minimum Salary</h6>
      <ul class="filter-list" id="salary_range_facets">
      </ul>

  </div>
</div>

Il frammento di codice seguente, tratto dalla pagina index.cshtml, crea in modo dinamico il codice HTML per visualizzare il primo facet, Business Title.The following code snippet from the index.cshtml page dynamically builds the HTML to display the first facet, Business Title. Funzioni simili compilano in modo dinamico il codice HTML per gli altri facet.Similar functions dynamically build the HTML for the other facets. Ogni facet contiene un'etichetta e un conteggio, che visualizza il numero di elementi trovati per questo risultato di facet.Each facet has a label and a count, which displays the number of items found for that facet result.

function UpdateBusinessTitleFacets(data) {
  var facetResultsHTML = '';
  for (var i = 0; i < data.length; i++) {
    facetResultsHTML += '<li><a href="javascript:void(0)" onclick="ChooseBusinessTitleFacet(\'' + data[i].Value + '\');">' + data[i].Value + ' (' + data[i].Count + ')</span></a></li>';
  }

  $("#business_title_facets").html(facetResultsHTML);
}

Suggerimento

Quando si progetta la pagina dei risultati di ricerca, ricordarsi di aggiungere un meccanismo per la cancellazione dei facet.When you design the search results page, remember to add a mechanism for clearing facets. Se si aggiungono caselle di controllo, gli utenti possono facilmente intuire come cancellare i filtri.If you add check boxes, you can easily see how to clear the filters. Per altri layout potrebbe essere necessario un modello di navigazione o un altro approccio creativo.For other layouts, you might need a breadcrumb pattern or another creative approach. Ad esempio, nell'applicazione di esempio Job Search Portal è possibile fare clic su [X] dopo un facet selezionato per cancellare il facet.For example, in the Job Search Portal sample application, you can click the [X] after a selected facet to clear the facet.

Creare la queryBuild the query

Il codice creato per la creazione di query deve specificare tutte le parti di una query valida, tra cui espressioni di ricerca, i facet, i filtri, l'assegnazione dei punteggi dei profili, ovvero qualsiasi elemento che consente di formulare una richiesta.The code that you write for building queries should specify all parts of a valid query, including search expressions, facets, filters, scoring profiles– anything used to formulate a request. In questa sezione verrà illustrata la collocazione dei facet in una query e l'uso dei filtri con i facet per fornire un set di risultati ridotto.In this section, we explore where facets fit into a query, and how filters are used with facets to deliver a reduced result set.

Si noti che i facet sono parte integrante di questa applicazione di esempio.Notice that facets are integral in this sample application. La funzionalità di ricerca in Job Portal Demo è progettata sulla base dei filtri e dell'esplorazione in base a facet.The search experience in the Job Portal Demo is designed around faceted navigation and filters. Il posizionamento principale nella pagina dell'esplorazione in base a facet ne dimostra l'importanza.The prominent placement of faceted navigation on the page demonstrates its importance.

Un esempio è spesso un buon punto di inizio.An example is often a good place to begin. L'esempio seguente, tratto dal file JobsSearch.cs, crea una richiesta che permette l'esplorazione in base a facet basata su qualifica professionale, posizione, tipo di pubblicazione e stipendio minimo.The following example, taken from the JobsSearch.cs file, builds a request that creates facet navigation based on Business Title, Location, Posting Type, and Minimum Salary.

SearchParameters sp = new SearchParameters()
{
  ...
  // Add facets
  Facets = new List<String>() { "business_title", "posting_type", "level", "salary_range_from,interval:50000" },
};

Un parametro di query del facet è impostato su un campo e a seconda del tipo di dati usati, può essere ulteriormente dotato di parametri in un elenco delimitato da virgole che includa count:<integer>, sort:<>, interval:<integer> e values:<list>.A facet query parameter is set to a field and depending on the data type, can be further parameterized by comma-delimited list that includes count:<integer>, sort:<>, interval:<integer>, and values:<list>. Durante l'impostazione di intervalli è supportato un elenco di valori per i dati numerici.A values list is supported for numeric data when setting up ranges. Per informazioni dettagliate, vedere Eseguire ricerche nei documenti (API di Ricerca di Azure) .See Search Documents (Azure Search API) for usage details.

Insieme ai facet, la richiesta formulata dall'applicazione deve anche permettere la creazione di filtri per limitare il set di documenti candidato in base alla selezione di un valore di facet.Along with facets, the request formulated by your application should also build filters to narrow down the set of candidate documents based on a facet value selection. Per uno store di biciclette, l'esplorazione in base a facet fornisce indicazioni a domande su colore, produttore e tipi di bicicletta disponibili.For a bike store, faceted navigation provides clues to questions like What colors, manufacturers, and types of bikes are available?. Il filtro risponde a domande come Quali biciclette sono mountain bike rosse in questa fascia di prezzo?.Filtering answers questions like Which exact bikes are red, mountain bikes, in this price range?. Quando si fa clic su "Red" per indicare che devono essere visualizzati solo i prodotti rossi, la query successiva inviata dall'applicazione include $filter=Color eq ‘Red’.When you click "Red" to indicate that only Red products should be shown, the next query the application sends includes $filter=Color eq ‘Red’.

Il frammento di codice seguente della pagina JobsSearch.cs aggiunge il Business Title selezionato al filtro, se si seleziona un valore dal facet Business Title.The following code snippet from the JobsSearch.cs page adds the selected Business Title to the filter if you select a value from the Business Title facet.

if (businessTitleFacet != "")
  filter = "business_title eq '" + businessTitleFacet + "'";

Suggerimenti e procedure consigliateTips and best practices

Suggerimenti per l'indicizzazioneIndexing tips

Migliorare l'efficienza di un indice se non si usa una casella di ricercaImprove index efficiency if you don't use a Search box

Se l'applicazione usa esclusivamente l'esplorazione in base a facet (vale a dire nessuna casella di ricerca), è possibile contrassegnare il campo come searchable=false, facetable=true per produrre un indice più compatto.If your application uses faceted navigation exclusively (that is, no search box), you can mark the field as searchable=false, facetable=true to produce a more compact index. Inoltre, l'indicizzazione si verifica solo su valori di facet interi con nessuna interruzione parola o indicizzazione delle parti di un valore per più parole.In addition, indexing occurs only on whole facet values, with no word-break or indexing of the component parts of a multi-word value.

Specificare quali campi possono essere usati come facetSpecify which fields can be used as facets

Tenere presente che lo schema dell'indice determina quali campi sono disponibili da usare come facet.Recall that the schema of the index determines which fields are available to use as a facet. Presupponendo che un campo consenta un'esplorazione in base a facet, la query specifica per quali campi eseguirla.Assuming a field is facetable, the query specifies which fields to facet by. Il campo per cui si eseguire l'esplorazione in base a facet fornisce i valori visualizzati sotto l'etichetta.The field by which you are faceting provides the values that appear below the label.

I valori visualizzati in ogni etichetta vengono recuperati dall'indice.The values that appear under each label are retrieved from the index. Ad esempio, se il campo del facet è il colore, i valori disponibili per i filtri aggiuntivi sono i valori per il campo, come rosso, bianco e così via.For example, if the facet field is Color, the values available for additional filtering are the values for that field - Red, Black, and so forth.

Per valori numerici e data/ora solo, è possibile impostare in modo esplicito i valori nel campo facet (ad esempio, facet=Rating,values:1|2|3|4|5).For Numeric and DateTime values only, you can explicitly set values on the facet field (for example, facet=Rating,values:1|2|3|4|5). È consentito un elenco di valori per questi tipi di campo semplificare la separazione dei risultati di facet in intervalli contigui (entrambi gli intervalli in base a valori numerici o periodi di tempo).A values list is allowed for these field types to simplify the separation of facet results into contiguous ranges (either ranges based on numeric values or time periods).

Per impostazione predefinita, è possibile avere un solo livello di esplorazione in base a facetBy default you can only have one level of faceted navigation

Come accennato, non esiste alcun supporto diretto per la nidificazione facet in una gerarchia.As noted, there is no direct support for nesting facets in a hierarchy. Per impostazione predefinita, l'esplorazione in base a facet in Ricerca di Azure supporta solo un livello di filtri.By default, faceted navigation in Azure Search only supports one level of filters. Tuttavia, esistono soluzioni alternative.However, workarounds do exist. È possibile codificare una struttura gerarchica facet in un Collection(Edm.String) con un punto di ingresso per singola gerarchia.You can encode a hierarchical facet structure in a Collection(Edm.String) with one entry point per hierarchy. L'implementazione di questa soluzione alternativa esula dall'ambito di questo articolo.Implementing this workaround is beyond the scope of this article.

Suggerimenti per le queryQuerying tips

Convalidare i campiValidate fields

Se si compila l'elenco di facet dinamicamente in base all'input dell'utente non attendibile, verificare che i nomi dei campi in base ai facet siano validi.If you build the list of facets dynamically based on untrusted user input, validate that the names of the faceted fields are valid. In alternativa, escluderne i nomi durante la creazione degli URL usando Uri.EscapeDataString() in .NET o l'equivalente nella piattaforma preferita.Or, escape the names when building URLs by using either Uri.EscapeDataString() in .NET, or the equivalent in your platform of choice.

Suggerimenti per i filtriFiltering tips

Aumentare la precisione della ricerca con i filtriIncrease search precision with filters

Usare i filtri.Use filters. Se si usano solo le espressioni di ricerca, lo stemming può comportare la restituzione di un documento che non dispone del valore di facet esatto in uno dei relativi campi.If you rely on just search expressions alone, stemming could cause a document to be returned that doesn’t have the precise facet value in any of its fields.

Aumentare le prestazioni della ricerca con i filtriIncrease search performance with filters

I filtri riducono il set di documenti candidati per la ricerca ed escluderli dalla classificazione.Filters narrow down the set of candidate documents for search and exclude them from ranking. Se si dispone di un ampio set di documenti, l'uso di un drill-down di facet selettivo spesso consente un miglioramento significativo delle prestazioni.If you have a large set of documents, using a selective facet drill-down often gives you better performance.

Filtrare solo i campi con facetFilter only the faceted fields

In un drill-down dell'esplorazione in base a facet, è possibile includere solo i documenti che contengono il valore del facet in un campo specifico (con facet), non in qualsiasi punto in tutti i campi disponibili per la ricerca.In faceted drill-down, you typically want to only include documents that have the facet value in a specific (faceted) field, not anywhere across all searchable fields. L'aggiunta di un filtro mette in evidenza il campo di destinazione indirizzando il servizio alla ricerca solo nel campo di esplorazione in base a facet per un valore corrispondente.Adding a filter reinforces the target field by directing the service to search only in the faceted field for a matching value.

Ridurre i risultati di facet con altri filtriTrim facet results with more filters

I risultati facet sono documenti trovati nei risultati della ricerca che corrispondono a un termine di facet.Facet results are documents found in the search results that match a facet term. Nell'esempio seguente, nei risultati della ricerca per il cloud computing, i 254 elementi dispongono inoltre di una specifica interna come tipo di contenuto.In the following example, in search results for cloud computing, 254 items also have internal specification as a content type. Gli elementi non si escludono necessariamente a vicenda.Items are not necessarily mutually exclusive. Se un elemento soddisfa i criteri di entrambi i filtri, viene conteggiato in ognuno di essi.If an item meets the criteria of both filters, it is counted in each one. Questa duplicazione è possibile quando si esegue l'esplorazione in base a facet su campi Collection(Edm.String) che vengono spesso usati per implementare l'aggiunta di tag nel documento.This duplication is possible when faceting on Collection(Edm.String) fields, which are often used to implement document tagging.

    Search term: "cloud computing"
    Content type
       Internal specification (254)
       Video (10) 

In generale, se si ritiene che i risultati dei facet siano costantemente troppo elevati, è consigliabile che aggiungere altri filtri per offrire agli utenti più opzioni per restringere la ricerca.In general, if you find that facet results are consistently too large, we recommend that you add more filters to give users more options for narrowing the search.

Suggerimenti sul conteggio dei risultatiTips about result count

Limitare il numero di elementi nell'esplorazione in base a facetLimit the number of items in the facet navigation

Per ogni campo di esplorazione in base a facet nella struttura di spostamento, esiste un limite predefinito di 10 valori.For each faceted field in the navigation tree, there is a default limit of 10 values. Questa impostazione predefinita risulta utile per le strutture di navigazione perché mantiene l'elenco di valori a un livello gestibile.This default makes sense for navigation structures because it keeps the values list to a manageable size. È possibile sostituire il valore predefinito assegnando un valore per il conteggio.You can override the default by assigning a value to count.

  • &facet=city,count:5 specifica che solo le prime 5 città incluse nei risultati migliori vengono restituite come risultato di facet.&facet=city,count:5 specifies that only the first five cities found in the top ranked results are returned as a facet result. Si consideri una query di esempio con un termine di ricerca di "aeroporto" e 32 corrispondenze.Consider a sample query with a search term of “airport” and 32 matches. Se la query specifica &facet=city,count:5, solo le prime cinque città univoche con il maggior numero di documenti nei risultati della ricerca vengono incluse nei risultati del facet.If the query specifies &facet=city,count:5, only the first five unique cities with the most documents in the search results are included in the facet results.

Si noti la distinzione tra i risultati di facet e i risultati della ricerca.Notice the distinction between facet results and search results. I risultati della ricerca sono tutti i documenti che corrispondono alla query.Search results are all the documents that match the query. I risultati facet sono le corrispondenze per ogni valore del facet.Facet results are the matches for each facet value. Nell'esempio vengono restituiti nomi di città non presenti nell'elenco di classificazione dei facet, 5 nel nostro esempio.In the example, search results include City names that are not in the facet classification list (5 in our example). I risultati che vengono filtrati tramite l'esplorazione in base a facet diventano visibili quando si cancellano i facet o si scelgono altri facet oltre a città.Results that are filtered out through faceted navigation become visible when you clear facets, or choose other facets besides City.

Nota

La discussione relativa a count quando ne esiste più di un tipo potrebbe portare a confusione.Discussing count when there is more than one type can be confusing. La tabella seguente offre un breve riepilogo di come viene usato il termine nell'API di Ricerca di Azure, nel codice di esempio e nella documentazione.The following table offers a brief summary of how the term is used in Azure Search API, sample code, and documentation.

  • @colorFacet.count
    Nel codice di presentazione, si noterà un parametro di conteggio del facet usato per visualizzare il numero di risultati facet.In presentation code, you should see a count parameter on the facet, used to display the number of facet results. Nei risultati facet, Conteggio indica il numero di documenti che corrispondono a un intervallo o termine facet.In facet results, count indicates the number of documents that match on the facet term or range.
  • &facet=City,count:12
    In una query di facet, è possibile impostare il conteggio su un valore.In a facet query, you can set count to a value. Il valore predefinito è 10, ma è possibile impostarlo a un livello superiore o inferiore.The default is 10, but you can set it higher or lower. L'impostazione count:12 consente di recuperare le 12 corrispondenze principali nei risultati di facet per numero di documenti.Setting count:12 gets the top 12 matches in facet results by document count.
  • "@odata.count""@odata.count"
    Nella risposta alla query, questo valore indica il numero di elementi corrispondenti nei risultati della ricerca.In the query response, this value indicates the number of matching items in the search results. In media, è maggiore della somma di tutti i facet risultati combinati, a causa della presenza di elementi che corrispondono al termine di ricerca, ma senza corrispondenze di valore del facet.On average, it’s larger than the sum of all facet results combined, due to the presence of items that match the search term, but have no facet value matches.

Ottenere i conteggi nei risultati di facetGet counts in facet results

Quando si aggiunge un filtro a una query in base a facet, è possibile mantenere l'istruzione facet (ad esempio, facet=Rating&$filter=Rating ge 4).When you add a filter to a faceted query, you might want to retain the facet statement (for example, facet=Rating&$filter=Rating ge 4). Tecnicamente, facet=Rating non è necessaria, ma mantenerla permette di restituire i conteggi dei valori di facet per le classificazioni a 4 stelle e superiori.Technically, facet=Rating isn’t needed, but keeping it returns the counts of facet values for ratings 4 and higher. Ad esempio, se si fa clic su "4" e la query include un filtro per maggiore o uguale a "4", i conteggi vengono restituiti per ciascuna valutazione uguale a 4 e superiore.For example, if you click "4" and the query includes a filter for greater or equal to "4", counts are returned for each rating that is 4 and higher.

Verificare di ottenere conteggi di facet accuratiMake sure you get accurate facet counts

In determinate circostanze, si noterà che i conteggi facet non corrispondono ai set di risultati (vedere navigazione collaborazione nella Ricerca di Azure (post di forum)).Under certain circumstances, you might find that facet counts do not match the result sets (see Faceted navigation in Azure Search (forum post)).

I conteggi di facet possono essere inesatti grazie all'architettura di partizionamento orizzontale.Facet counts can be inaccurate due to the sharding architecture. Ogni indice di ricerca include più partizioni e ciascuno di essi segnala i principali N facet per numero di documenti, combinando poi i dati in un singolo risultato.Every search index has multiple shards, and each shard reports the top N facets by document count, which is then combined into a single result. Se alcune partizioni dispongono di numerosi valori corrispondenti a differenza di altre, è probabile che alcuni valori di facet siano mancanti o non calcolati nei risultati.If some shards have many matching values, while others have fewer, you may find that some facet values are missing or under-counted in the results.

Sebbene questo comportamento potrebbe cambiare in qualsiasi momento, se si verifica subito, è possibile risolverlo "gonfiando" artificialmente il conteggio: per un numero elevato di documenti e applicare il report completo di ogni partizione.Although this behavior could change at any time, if you encounter this behavior today, you can work around it by artificially inflating the count: to a large number to enforce full reporting from each shard. Se il valore del conteggio è maggiore o uguale al numero di valori univoci nel campo, vengono garantiti risultati accurati.If the value of count: is greater than or equal to the number of unique values in the field, you are guaranteed accurate results. Tuttavia, quando i conteggi di documenti sono elevati, si verifica una riduzione delle prestazioni ed è quindi consigliabile usare questa opzione con cautela.However, when document counts are high, there is a performance penalty, so use this option judiciously.

Suggerimenti per l'interfaccia utenteUser interface tips

Aggiungere etichette per ogni campo nella navigazione facetAdd labels for each field in facet navigation

Le etichette vengono in genere definite nel codice HTML o nel modulo (index.cshtml nell'applicazione di esempio).Labels are typically defined in the HTML or form (index.cshtml in the sample application). Non esiste alcuna API in Ricerca di Azure per le etichette di navigazione facet o qualsiasi altro metadato.There is no API in Azure Search for facet navigation labels or any other metadata.

Filtro basato su un intervalloFilter based on a range

L'esplorazione in base a facet su intervalli di valori è un requisito comune delle applicazioni di ricerca.Faceting over ranges of values is a common search application requirement. Gli intervalli sono supportati per i dati numerici e i valori DateTime.Ranges are supported for numeric data and DateTime values. Per ulteriori informazioni su ogni approccio in Eseguire ricerche nei documenti (API di Ricerca di Azure).You can read more about each approach in Search Documents (Azure Search API).

Ricerca di Azure semplifica la creazione degli intervalli fornendo due approcci per l'elaborazione di un intervallo.Azure Search simplifies range construction by providing two approaches for computing a range. Per entrambi gli approcci Ricerca di Azure crea gli intervalli appropriati in base agli input resi disponibili.For both approaches, Azure Search creates the appropriate ranges given the inputs you’ve provided. Ad esempio, se si specificano valori di intervallo di 10|20|30, vengono creati automaticamente gli intervalli 0-10, 10-20, 20-30.For instance, if you specify range values of 10|20|30, it automatically creates ranges of 0-10, 10-20, 20-30. L'applicazione può facoltativamente rimuovere qualsiasi intervallo vuoto.Your application can optionally remove any intervals that are empty.

Approccio 1: utilizzare il parametro intervalloApproach 1: Use the interval parameter
Per impostare i facet di prezzo in incrementi di 10 dollari, è necessario specificare: &facet=price,interval:10To set price facets in $10 increments, you would specify: &facet=price,interval:10

Approccio 2: utilizzare un elenco di valoriApproach 2: Use a values list
Per dati numerici, è possibile usare un elenco di valori.For numeric data, you can use a values list. Prendere in considerazione l'intervallo di facet per il campo listPrice, sottoposto a rendering come segue:Consider the facet range for a listPrice field, rendered as follows:

Elenco di valori di esempio

Per specificare un intervallo di facet come quello nello screenshot precedente, usare un elenco di valori:To specify a facet range like the one in the preceding screen shot, use a values list:

facet=listPrice,values:10|25|100|500|1000|2500

Ogni intervallo viene compilato usando 0 come punto di partenza e un valore dall'elenco come endpoint e quindi privato dell'intervallo precedente per creare intervalli discreti.Each range is built using 0 as a starting point, a value from the list as an endpoint, and then trimmed of the previous range to create discrete intervals. Ricerca di Azure esegue questa operazione nell'ambito dell'esplorazione in base facet.Azure Search does these things as part of faceted navigation. Non è necessario scrivere codice per la struttura di ogni intervallo.You do not have to write code for structuring each interval.

Creare un filtro per un intervalloBuild a filter for a range

Per filtrare i documenti in base a un intervallo selezionato, è possibile usare gli operatori di filtro "ge" e "lt" in un'espressione in due parti che definisce gli endpoint dell'intervallo.To filter documents based on a range you select, you can use the "ge" and "lt" filter operators in a two-part expression that defines the endpoints of the range. Ad esempio, se si sceglie l'intervallo 10-25 per un campo listPrice, il filtro sarà $filter=listPrice ge 10 and listPrice lt 25.For example, if you choose the range 10-25 for a listPrice field, the filter would be $filter=listPrice ge 10 and listPrice lt 25. Nel codice di esempio l'espressione filtro usa i parametri priceFrom e priceTo per impostare gli endpoint.In the sample code, the filter expression uses priceFrom and priceTo parameters to set the endpoints.

Query per un intervallo di valori

Filtro basato sulla distanzaFilter based on distance

È comune vedere filtri che consentono di scegliere un negozio, un ristorante o una destinazione in base alla prossimità alla posizione corrente.It’s common to see filters that help you choose a store, restaurant, or destination based on its proximity to your current location. Questo tipo di filtro potrebbe somigliare all'esplorazione in base a facet, ma è semplicemente un filtro.While this type of filter might look like faceted navigation, it’s just a filter. Viene menzionato per coloro che cercano in particolare consigli di implementazione per tale problema particolare di progettazione.We mention it here for those of you who are specifically looking for implementation advice for that particular design problem.

Sono disponibili due funzioni geospaziali in Ricerca di Azure, geo.distance e geo.intersects.There are two Geospatial functions in Azure Search, geo.distance and geo.intersects.

  • La funzione geo restituisce la distanza in chilometri tra due punti.The geo.distance function returns the distance in kilometers between two points. Un punto è un campo e l'altro è una costante passata come parte del filtro.One point is a field and other is a constant passed as part of the filter.
  • La funzione intersects restituisce true se un punto specificato si trova all'interno di un poligono specificato.The geo.intersects function returns true if a given point is within a given polygon. Il punto è un campo e il poligono è specificato come un elenco costante di coordinate passate come parte del filtro.The point is a field and the polygon is specified as a constant list of coordinates passed as part of the filter.

È possibile trovare alcuni esempi di filtri in Sintassi dell'espressione di OData (Ricerca di Azure).You can find filter examples in OData expression syntax (Azure Search).

Provare la demoTry the demo

Job Portal Demo di Ricerca di Azure contiene gli esempi descritti nel presente articolo.The Azure Search Job Portal Demo contains the examples referenced in this article.

Quando si lavora con i risultati, controllare l'URL per le modifiche nella costruzione delle query.As you work with search results, watch the URL for changes in query construction. Questa applicazione è casualmente incaricata all'accodamento i facet all'URI a ogni selezione.This application happens to append facets to the URI as you select each one.

  1. Per usare la funzionalità di mapping dell'app demo, ottenere una chiave Bing Mappe dal Bing Maps Dev Center.To use the mapping functionality of the demo app, get a Bing Maps key from the Bing Maps Dev Center. Incollare il codice sulla chiave esistente nella pagina index.cshtml.Paste it over the existing key in the index.cshtml page. L'impostazione BingApiKey nel file Web.config non viene usata.The BingApiKey setting in the Web.config file is not used.

  2. Eseguire l'applicazione.Run the application. Iniziare la presentazione facoltativa o chiudere la finestra di dialogo.Take the optional tour, or dismiss the dialog box.

  3. Immettere un termine di ricerca, ad esempio "analyst" e fare clic sull'icona di ricerca.Enter a search term, such as "analyst", and click the Search icon. La query viene eseguita rapidamente.The query executes quickly.

    Una struttura di esplorazione in base a facet viene inoltre restituita con i risultati della ricerca.A faceted navigation structure is also returned with the search results. Nella pagina dei risultati di ricerca la struttura di esplorazione in base a facet include conteggi per ogni risultato facet.In the search result page, the faceted navigation structure includes counts for each facet result. Non sono stati selezionati facet e quindi vengono restituiti tutti i risultati corrispondenti.No facets are selected, so all matching results are returned.

    Risultati della ricerca prima della selezione di facet

  4. Fare clic su un valore per Business Title, Location o Minimum Salary.Click a Business Title, Location, or Minimum Salary. I facet sono null in una ricerca iniziale, ma come assumono i valori, vengono eliminati i risultati della ricerca di elementi che non corrispondono.Facets were null on the initial search, but as they take on values, the search results are trimmed of items that no longer match.

    Risultati della ricerca dopo la selezione di facet

  5. Per cancellare la query basata su facet in modo che sia possibile provare i comportamenti di query diversi, fare clic su [X] dopo i facet selezionati per cancellarli.To clear the faceted query so that you can try different query behaviors, click the [X] after the selected facets to clear the facets.

Altre informazioniLearn more

Guardare Azure Search Deep Dive (Approfondimenti su Ricerca di Azure).Watch Azure Search Deep Dive. Al minuto 45:25 è presente una dimostrazione su come implementare i facet.At 45:25, there is a demo on how to implement facets.

Per altre informazioni sui principi di progettazione per l'esplorazione in base a facet, è consigliabile usare i collegamenti seguenti:For more insights on design principles for faceted navigation, we recommend the following links: