Configurare l'interfaccia utente

Questa pagina del tutorial su Google Cloud Search mostra come configurare un'applicazione di ricerca personalizzata utilizzando il widget di ricerca incorporabile. Per iniziare dall'inizio di questo tutorial, consulta Tutorial introduttivo su Cloud Search.

Installa le dipendenze

  1. Se il connettore sta ancora indicizzando il repository, apri una nuova shell e continua da lì.

  2. Dalla riga di comando, cambia la directory in cloud-search-samples/end-to-end/search-interface.

  3. Per scaricare le dipendenze richieste per l'esecuzione del server web, esegui questo comando:

npm install

Crea le credenziali dell'applicazione di ricerca

Il connettore richiede le credenziali dell'account di servizio per chiamare le API Cloud Search. Per creare le credenziali:

  1. Torna alla console Google Cloud.

  2. Nel menu di navigazione a sinistra, fai clic su Credenziali.

  3. Nell'elenco a discesa Crea credenziali, seleziona ID client OAuth. Viene visualizzata la pagina "Crea ID client OAuth".

  4. (Facoltativo) Se non hai configurato la schermata per il consenso, fai clic su CONFIGURA SCHERMATA DI CONSENSO. Viene visualizzata la schermata "Consenso OAuth".

    1. Fai clic su Interno e poi su CREA. Viene visualizzata un'altra schermata "Consenso OAuth".

    2. Compila i campi obbligatori. Per ulteriori istruzioni, consulta la sezione relativa al consenso degli utenti nella pagina Configurare OAuth 2.0.

  5. Fai clic sull'elenco a discesa Tipo di applicazione e seleziona Applicazione web.

  6. Nel campo Nome, inserisci "tutorial".

  7. Nel campo Origini JavaScript autorizzate, fai clic su AGGIUNGI URI. Viene visualizzato un campo "URI" vuoto.

  8. Nel campo URI, inserisci http://localhost:8080.

  9. Fai clic su CREA. Viene visualizzata la schermata "Client OAuth creato".

  10. Prendi nota dell'ID client. Questo valore viene utilizzato per identificare l'applicazione quando si richiede l'autorizzazione utente con OAuth2. Il client secret non è richiesto per questa implementazione.

  11. Fai clic su Ok.

Crea l'applicazione di ricerca

Quindi, crea un'applicazione di ricerca nella Console di amministrazione. L'applicazione di ricerca è una rappresentazione virtuale dell'interfaccia di ricerca e della sua configurazione predefinita.

  1. Torna alla Console di amministrazione Google.
  2. Fai clic sull'icona App. Viene visualizzata la pagina "Amministrazione app".
  3. Fai clic su Google Workspace. Viene visualizzata la pagina "Amministrazione Google Workspace".
  4. Scorri verso il basso e fai clic su Cloud Search. Viene visualizzata la pagina "Impostazioni per Google Workspace".
  5. Fai clic su Applicazioni di ricerca. Viene visualizzata la pagina "Cerca applicazioni".
  6. Fai clic sul pulsante giallo rotondo +. Viene visualizzata la finestra di dialogo "Crea una nuova applicazione di ricerca".
  7. Nel campo Nome visualizzato, inserisci "tutorial".
  8. Fai clic su CREA.
  9. Fai clic sull'icona a forma di matita accanto all'applicazione di ricerca appena creata ("Modifica applicazione di ricerca"). Viene visualizzata la pagina "Dettagli dell'applicazione di ricerca".
  10. Prendi nota dell'ID applicazione.
  11. A destra di Origini dati, fai clic sull'icona a forma di matita.
  12. Accanto a "Tutorial", fai clic sul pulsante di attivazione/disattivazione Abilita. Questa opzione di attivazione/disattivazione abilita l'origine dati del tutorial per l'applicazione di ricerca appena creata.
  13. A destra dell'origine dati "tutorial", fai clic su Opzioni di visualizzazione.
  14. Controlla tutti i facet.
  15. Fai clic su SALVA.
  16. Fai clic su FINE.

Configura l'applicazione web

Dopo aver creato le credenziali e l'app di ricerca, aggiorna la configurazione dell'applicazione in modo da includere questi valori come segue:

  1. Dalla riga di comando, cambia la directory in "cloud-search-samples/end-to-end/search-interface/public".
  2. Apri il file app.js con un editor di testo.
  3. Individua la variabile searchConfig nella parte superiore del file.
  4. Sostituisci [client-id] con l'ID client OAuth creato in precedenza.
  5. Sostituisci [application-id] con l'ID dell'applicazione di ricerca indicato nella sezione precedente.
  6. Salva il file.

Eseguire l'applicazione

Avvia l'applicazione eseguendo questo comando:

npm run start

Eseguire una query sull'indice

Per eseguire una query sull'indice utilizzando il widget di ricerca:

  1. Apri il browser e vai a http://localhost:8080.
  2. Fai clic su Accedi per autorizzare l'app a eseguire query su Cloud Search per tuo conto.
  3. Nella casella di ricerca, inserisci una query, come la parola "test", e premi Invio. La pagina dovrebbe visualizzare i risultati della query insieme ai facet e ai controlli di paginazione per navigare tra i risultati.

Revisione del codice

Le restanti sezioni esaminano il modo in cui è creata l'interfaccia utente.

Caricamento del widget in corso...

Il widget e le relative librerie vengono caricati in due fasi. Per prima cosa, viene caricato lo script di bootstrap:

<script src="https://apis.google.com/js/api.js?mods=enable_cloud_search_widget&onload=onLoad" async defer></script>

In secondo luogo, il callback onLoad viene chiamato quando lo script è pronto. Quindi carica le librerie del client API di Google, di Accedi con Google e delle librerie dei widget di Cloud Search.

/**
 * Load the cloud search widget & auth libraries. Runs after
 * the initial gapi bootstrap library is ready.
 */
function onLoad() {
  gapi.load('client:auth2:cloudsearch-widget', initializeApp)
}

La restante inizializzazione dell'app viene gestita da initializeApp una volta caricate tutte le librerie richieste.

Gestione delle autorizzazioni

Gli utenti devono autorizzare l'app a eseguire query per loro conto. Sebbene il widget possa richiedere agli utenti di autorizzare, puoi ottenere un'esperienza utente migliore gestendo l'autorizzazione autonomamente.

Per l'interfaccia di ricerca, l'app presenta due visualizzazioni diverse a seconda dello stato di accesso dell'utente.

<div class="content">
  <div id="app" hidden>
    <div id="header">
      <button id="sign-out">Sign-out</button>
    </div>
    <!-- Markup for widget...-->
  </div>
  <div id="welcome" hidden>
    <h1>Cloud Search Tutorial</h1>
    <p>Sign in with your Google account to search.</p>
    <button id="sign-in">Sign-in</button>
  </div>
</div>

Durante l'inizializzazione viene abilitata la visualizzazione corretta e vengono configurati i gestori per gli eventi di accesso e disconnessione:

/**
 * Initialize the app after loading the Google API client &
 * Cloud Search widget.
 */
async function initializeApp() {
  await gapi.auth2.init({
      'clientId': searchConfig.clientId,
      'scope': 'https://www.googleapis.com/auth/cloud_search.query'
  });

  let auth = gapi.auth2.getAuthInstance();

  // Watch for sign in status changes to update the UI appropriately
  let onSignInChanged = (isSignedIn) => {
    document.getElementById("app").hidden = !isSignedIn;
    document.getElementById("welcome").hidden = isSignedIn;
    if (resultsContainer) {
      resultsContainer.clear();
    }
  }
  auth.isSignedIn.listen(onSignInChanged);
  onSignInChanged(auth.isSignedIn.get()); // Trigger with current status

  // Connect sign-in/sign-out buttons
  document.getElementById("sign-in").onclick = (e) =>  auth.signIn();
  document.getElementById("sign-out").onclick = (e) => auth.signOut();

  // ...

}

Creazione dell'interfaccia di ricerca

Il widget di ricerca richiede una piccola quantità di markup HTML per l'input di ricerca e per contenere i risultati di ricerca:

<div id="search_bar">
  <div>
    <div id="suggestions_anchor">
      <input type="text" id="search_input" placeholder="Search for...">
    </div>
  </div>
</div>
<div id="facet_results" ></div>
<div id="search_results" ></div>

Il widget viene inizializzato e associato agli elementi di input e container durante l'inizializzazione:

gapi.config.update('cloudsearch.config/apiVersion', 'v1');
resultsContainer = new gapi.cloudsearch.widget.resultscontainer.Builder()
  .setSearchApplicationId(searchConfig.searchAppId)
  .setSearchResultsContainerElement(document.getElementById('search_results'))
  .setFacetResultsContainerElement(document.getElementById('facet_results'))
  .build();

const searchBox = new gapi.cloudsearch.widget.searchbox.Builder()
  .setSearchApplicationId(searchConfig.searchAppId)
  .setInput(document.getElementById('search_input'))
  .setAnchor(document.getElementById('suggestions_anchor'))
  .setResultsContainer(resultsContainer)
  .build();

Congratulazioni, hai completato correttamente il tutorial. Continua per istruzioni sulla pulizia.

Indietro Avanti