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 umieszczanie 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. skonfigurowanie aplikacji do wyszukiwania.
  2. Wygeneruj dane logowania OAuth dla aplikacji.
  3. Wysyłaj zapytania do indeksu.
  4. Wyświetl wyniki zapytania.

Możesz ulepszyć interfejs za pomocą funkcji takich jak stronicowanie, sortowanie, filtrowanie, aspekty i autouzupełnianie.

Konfigurowanie wyszukiwarki

Dla 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 powyżej liczby źródeł skonfigurowanych w aplikacji wyszukiwania. Za pomocą dataSourceRestrictions możesz ograniczyć zapytanie do podzbioru tych źródeł.

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 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 na stronie Google Identity Platform.

Wysyłanie zapytań do indeksu

Aby przeszukać indeks, użyj metody search.

Każde żądanie musi zawierać tekst querysearchApplicationId.

W tym przykładzie wysyłamy 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ć element title i link do oryginalnego elementu. Aby poprawić wyświetlanie, możesz też używać fragmentów i metadanych.

Obsługa wyników uzupełniających

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

Jeśli zwracasz wyniki dodatkowe, poinformuj o tym użytkownika. W przypadku a REPLACE możesz powiedzieć: „Wyszukiwanie nie zwróciło żadnych wyników. 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 są widoczne w polu:structuredResults

{
  "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 wartością cardType równą 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 zindeksowanego tekstu lub kodu HTML. Jeśli występują terminy wyszukiwania, matchRanges wskazuje 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;
}

Biorąc pod uwagę ten fragment kodu:

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

Powstały ciąg znaków HTML wygląda tak:

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

Wyświetlane metadane

Użyj pola metadata, aby podać informacje takie jak createTime, updateTime i uporządkowane dane. Używaj displayOptions do wyświetlania danych strukturalnych.

Pobieranie dodatkowych wyników

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

Sortuj wyniki

Aby określić kolejność, użyj sortOptions:

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

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

Dodaj filtry

Ogranicz wyniki za pomocą filtrów w aplikacji do wyszukiwania lub w żądaniu. Jeśli oba określają filtry źródła, oba muszą mieć wartość „prawda”.

Zastosuj filtry w dataSourceRestrictions.filterOptions[]. Główne 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ą wiele filtrów wartości.

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

Aspekty pomagają użytkownikom interaktywnie precyzować 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. Wyświetlanie wyników wyszukiwania i aspektów. 1. Użytkownik wybiera wartości aspektów. 1. Powtórz zapytanie z filtrem na podstawie wybranych opcji.

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

Oznacz właściwość typu integer jako umożliwiającą podział na grupy, aby zawężać wyniki według zakresów (np. „100–200” stron). Ustaw wartość isFacetable na true i określ domyślne opcje podziału na grupy w schemacie.

Filtrowanie wyników według rozmiaru lub daty dokumentu

Używaj operatorów zarezerwowanych:

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

Dodawanie sugestii

Użyj interfejsu suggest do automatycznego uzupełniania na podstawie historii zapytań, kontaktów i treści dokumentów.