Tworzenie interfejsu wyszukiwania za pomocą interfejsu Query API

Interfejs Query API udostępnia metody wyszukiwania i sugerowania, które umożliwiają tworzenie interfejsu wyszukiwania lub osadzanie wyników w aplikacji.

W przypadku aplikacji internetowych o minimalnych wymaganiach rozważ użycie widżetu wyszukiwania. Zobacz Tworzenie interfejsu wyszukiwania za pomocą widżetu wyszukiwania.

Tworzenie interfejsu wyszukiwania

Utworzenie minimalnego interfejsu wyszukiwania wymaga wykonania kilku czynności:

  1. Skonfiguruj wyszukiwarkę.
  2. Wygeneruj dane logowania OAuth dla aplikacji.
  3. Wyślij zapytanie do indeksu.
  4. Wyświetl wyniki zapytania.

Możesz rozszerzyć interfejs o funkcje takie jak stronicowanie, sortowanie, filtrowanie, aspekty i autouzupełnianie.

Konfigurowanie wyszukiwarki

W przypadku każdego interfejsu wyszukiwania musisz utworzyć co najmniej 1 wyszukiwarkę. Wyszukiwarka podaje domyślne parametry, takie jak źródła danych, kolejność sortowania, filtry i aspekty. Możesz zastąpić te parametry za pomocą interfejsu Query API.

Nie możesz zwiększyć liczby źródeł danych używanych w zapytaniu ponad te, które zostały skonfigurowane w wyszukiwarce. Możesz ograniczyć zapytanie do podzbioru tych źródeł za pomocą parametru dataSourceRestrictions.

Więcej informacji znajdziesz w artykule Dostosowywanie wyszukiwania.

Generowanie danych logowania OAuth dla aplikacji

Oprócz czynności opisanych w artykule Konfigurowanie dostępu do interfejsu Cloud Search API, musisz wygenerować dane logowania OAuth dla swojej aplikacji internetowej.

Użyj danych logowania, aby poprosić o autoryzację w imieniu użytkownika. Użyj zakresu https://www.googleapis.com/auth/cloud_search.query.

Więcej informacji o opcjach OAuth znajdziesz w Google Identity Platform.

Wysyłanie zapytania do indeksu

Aby przeszukać indeks, użyj search metody.

Każde żądanie musi zawierać tekst query i searchApplicationId.

Ten przykład wysyła zapytanie do źródła danych o filmach:

{
  "query": "titanic",
  "requestOptions": {
    "searchApplicationId": "searchapplications/<search_app_id>"
  }
}

Wyświetlanie wyników zapytania

Interfejsy wyszukiwania powinny wyświetlać title elementu i link do oryginalnego elementu. Aby poprawić wyświetlanie, możesz też użyć fragmentów i metadanych.

Obsługa wyników dodatkowych

Cloud Search zwraca wyniki dodatkowe, gdy zapytanie nie znajduje wystarczającej liczby dopasowań. Wskazuje na to pole queryInterpretation. Jeśli zwracane są tylko wyniki dodatkowe, InterpretationType ma wartość REPLACE. Jeśli są one połączone, ma wartość BLEND.

Gdy zwracasz wyniki dodatkowe, poinformuj o tym użytkownika. W przypadku REPLACE możesz powiedzieć: „Wyszukiwanie nie zwróciło żadnych wyników. Wyświetlamy wyniki podobnych zapytań”.

Obsługa wyników dotyczących osób

Cloud Search zwraca dokumenty związane z osobami i informacjami o pracownikach za pomocą funkcji wyszukiwania osób. Wyniki znajdują się w structuredResults polu:

{
  "results": [...],
  "structuredResults": [{
    "person": {...}
  }]
}

Dopasowywanie bezpośrednich podwładnych

Dopasowywanie bezpośrednich podwładnych umożliwia użytkownikom wyświetlanie bezpośrednich podwładnych danej osoby. Odpowiedź zawiera assistCardProtoHolder z cardType o wartości RELATED_PEOPLE_ANSWER_CARD.

Wyłączanie optymalizacji

Optymalizacje, takie jak wyniki dodatkowe, są domyślnie włączone. Możesz je wyłączyć:

Wyróżnianie fragmentów

Cloud Search zwraca fragment indeksowanego tekstu lub kodu HTML. Jeśli występują wyszukiwane hasła, matchRanges określa ich lokalizację. Użyj tych zakresów, aby wyróżnić tekst.

function highlightSnippet(snippet) {
  let text = snippet.snippet;
  let formattedText = text;
  if (snippet.matchRanges) {
    let parts = [];
    let index = 0;
    for (let match of snippet.matchRanges) {
      let start = match.start || 0; // Default to 0 if omitted
      let end = match.end;
      if (index < start) { // Include any leading text before/between ranges
        parts.push(text.slice(index, start));
      }
      parts.push('<span class="highlight">');
      parts.push(text.slice(start, end));
      parts.push('</span>');
      index = end;
    }
    parts.push(text.slice(index)); // Include any trailing text after last range
    formattedText = parts.join('');
  }
  return formattedText;
}

Fragment:

{
  "snippet": "This is an example snippet...",
  "matchRanges": [
    {
      "start": 11,
      "end": 18
    }
  ]
}

Powstały ciąg HTML wygląda tak:

This is an <span class="highlight">example</span> snippet...

Wyświetlanie metadanych

Użyj pola metadata, aby uzyskać informacje takie jak createTime, updateTime i uporządkowane dane. Aby wyświetlić uporządkowane dane, użyj displayOptions.

Pobieranie dodatkowych wyników

Aby pobrać więcej wyników, ustaw pole start na wybrany przesunięcie. Dostosuj rozmiar strony za pomocą pageSize. Użyj resultCount, aby wyświetlić łączną liczbę elementów lub szacunkową liczbę.

Sortowanie wyników

Użyj sortOptions , aby określić kolejność:

  • operatorName: właściwość, według której ma być sortowane.
  • sortOrder: ASCENDING lub DESCENDING.

Trafność jest domyślnym i dodatkowym kluczem sortowania.

Dodawanie filtrów

Ogranicz wyniki za pomocą filtrów w wyszukiwarce lub żądaniu. Jeśli oba określają filtry dla źródła, oba muszą mieć wartość true.

Zastosuj filtry w dataSourceRestrictions.filterOptions[]. Podstawowe typy filtrów:

  • Filtry obiektów: ograniczają dopasowania do określonego typu.
  • Filtry wartości: ograniczają dopasowania na podstawie operatora i wartości.

Filtry złożone łączą kilka filtrów wartości.

Zawężanie wyników za pomocą aspektów

Aspekty pomagają użytkownikom interaktywnie zawężać zapytania. Gdy poprosisz o aspekty, Cloud Search obliczy najczęstsze wartości tych właściwości.

Typowy wzorzec: 1. Zapytanie określające właściwości aspektu. 1. Renderowanie wyników wyszukiwania i aspektów. 1. Użytkownik wybiera wartości aspektu. 1. Powtórz zapytanie z filtrem opartym na wyborach.

Wyniki aspektów z polami opartymi na liczbach całkowitych

Oznacz właściwość liczby całkowitej jako możliwą do filtrowania, aby zawęzić wyniki według zakresów (np. „100–200” stron). Ustaw isFacetable na true i zdefiniuj domyślne opcje grupowania w schemacie.

Wyniki aspektów według rozmiaru dokumentu lub daty

Użyj zarezerwowanych operatorów:

  • itemsize: rozmiar pliku w bajtach.
  • createddatetimestamp: data utworzenia.
  • lastmodified: data modyfikacji.

Dodawanie sugestii

Użyj interfejsu Suggest API do autouzupełniania na podstawie historii zapytań, kontaktów i treści dokumentów.