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:
- Skonfiguruj wyszukiwarkę.
- Wygeneruj dane logowania OAuth dla aplikacji.
- Wyślij zapytanie do indeksu.
- 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ć:
- Na poziomie wyszukiwarki: ustaw
force_verbatim_modenatrue. - Na poziomie zapytania: Ustaw
enableVerbatimModenatrue.
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:ASCENDINGlubDESCENDING.
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.