Interfejs Query API udostępnia metody wyszukiwania i sugerowania lub osadzania wyników wyszukiwania w aplikacji.
W przypadku aplikacji internetowych o minimalnych wymaganiach rozważ użycie widżetu wyszukiwania. Więcej informacji: Tworzenie interfejsu wyszukiwania za pomocą widżetu wyszukiwania
Tworzenie interfejsu wyszukiwania
Stworzenie minimalnego interfejsu wyszukiwania wymaga kilku kroków:
- Konfigurowanie wyszukiwarki
- Wygeneruj dane logowania OAuth dla aplikacji
- Wykonywanie zapytania dotyczącego indeksu
- Wyświetl wyniki zapytania
Interfejs wyszukiwania można dodatkowo ulepszyć m.in. za pomocą funkcji stronicowania, sortowania, filtrowania, aspektów i automatycznych sugestii.
Konfigurowanie wyszukiwarki
Musisz utworzyć co najmniej jedną wyszukiwarkę, która będzie powiązana z każdą z nich tworzonego przez siebie interfejsu wyszukiwania. Wyszukiwarka domyślnie udostępnia parametrów zapytania, takich jak źródła danych, kolejność sortowania filtry i aspekty, o które chcesz poprosić. W razie potrzeby możesz zastąpić te parametry za pomocą interfejsu API zapytań.
Więcej informacji o wyszukiwarkach znajdziesz pod adresem Dostosowywanie wyszukiwania w Cloud Search
Wygeneruj dane logowania OAuth dla aplikacji
Poza wykonaniem kroków opisanych w Skonfiguruj dostęp do interfejsu Google Cloud Search API. musisz też wygenerować dane logowania OAuth dla aplikacji internetowej. Typ danych logowania zależy od kontekstu, w którym są używane dane logowania.
Użyj tych danych logowania, aby poprosić o autoryzację w imieniu użytkownika. Użyj
zakres https://www.googleapis.com/auth/cloud_search.query
podczas żądania
autoryzacji.
Więcej informacji o opcjach protokołu OAuth i bibliotekach klienta znajdziesz w artykule [Platforma tożsamości Google](https://developers.google.com/identity/choose-auth{: .external target="_blank"}).
Wykonywanie zapytania dotyczącego indeksu
Korzystanie z search
do wyszukiwania w indeksie.
Każde żądanie musi zawierać 2 informacje: tekst query
w celu dopasowania elementów do oraz searchApplicationId
identyfikującego identyfikator
wyszukiwarki, której chcesz użyć.
Ten fragment kodu zawiera zapytanie do źródła danych filmu Titanic:
{
"query": "titanic",
"requestOptions": {
"searchApplicationId": "searchapplications/<search_app_id>"
},
}
Wyświetl wyniki zapytania
Interfejsy wyszukiwania powinny wyświetlać przynajmniej element title
jako
oraz link do oryginalnego elementu. Można jeszcze bardziej poprawić wygląd
z wykorzystaniem dodatkowych informacji w wynikach wyszukiwania.
np. fragmentu i metadanych.
Obsługa wyników dodatkowych
Domyślnie Cloud Search zwraca wyniki uzupełniające, jeśli:
niewystarczająca ilość wyników dla zapytania użytkownika.
queryInterpretation
w odpowiedzi wskazuje, kiedy zwracane są wyniki uzupełniające. Jeśli tylko
zwracane są wyniki uzupełniające, dla którego InterpretationType
ma wartość REPLACE
. Jeśli
zwracanych jest kilka wyników pierwotnego zapytania wraz z dodatkowymi
wyników, kolumna InterpretationType
ma wartość BLEND
. W obu przypadkach
QueryInterpretation.Reason = NOT_ENOUGH_RESULTS_FOUND_FOR_USER_QUERY
Gdy zwracane są niektóre wyniki uzupełniające, możesz podać tekst
co wskazuje, że zostały zwrócone dodatkowe wyniki. Na przykład w przypadku
REPLACE
, możesz zobaczyć tekst „Twoje wyszukiwanie oryginalnego zapytania nie
nie pasuje do żadnych wyników. Wyświetlam wyniki dla podobnych zapytań”.
W przypadku BLEND
może wyświetlić się tekst „Twoje wyszukiwanie
oryginalne zapytanie nie dało wystarczającej liczby wyników. W tym wyniki dla podobnych
zapytań”.
Zarządzaj wynikami dotyczącymi osób
Cloud Search zwraca 2 typy „wyników dotyczących osób”: dokumenty powiązane z
osoba, której imię i nazwisko zostało użyte w zapytaniu oraz w informacjach o pracowniku danej osoby
imię i nazwisko użyte w zapytaniu. Ten drugi typ wyniku to funkcja Cloud
Wyszukiwarki osób w wyszukiwarce, a wyniki takiego zapytania można znaleźć tutaj:
structuredResults
w odpowiedzi interfejsu API zapytania:
{
"results": [...],
"structuredResults": [{
"person": {...}
}]
}
Dopasowywanie bezpośrednich raportów
Dopasowanie raportów bezpośrednich to funkcja Wyszukiwarki osób w Cloud Search, która
użytkownicy widzą bezpośrednie podwładny osoby w swojej organizacji.
Wynik jest dostępny w polu structuredResults
.
W przypadku zapytań o menedżera lub bezpośrednich podwładnych odpowiedź zawiera
assistCardProtoHolder
w: structuredResults
.
assistCardProtoHolder
ma pole o nazwie cardType
, które będzie równe
RELATED_PEOPLE_ANSWER_CARD
assistCardProtoHolder
zawiera kartę
o nazwie relatedPeopleAnswerCard
, który zawiera rzeczywistą odpowiedź.
Zawiera on subject
(osobę uwzględnioną w zapytaniu) oraz
relatedPeople
, czyli zbiór osób związanych z danym tematem.
Pole relationType
zwraca wartość MANAGER
lub DIRECT_REPORTS
.
Poniższy kod zawiera przykładową odpowiedź na potrzeby bezpośredniego dopasowania raportów zapytanie:
{
"results": [],
"structuredResults": [{
"assistCardProtoHolder": {
"extensions": {
"@type": "type.googleapis.com/enterprise.topaz.sidekick.AssistCardProto",
"cardMetadata": {
"cardCategory": "ANSWER"
},
"cardType": "RELATED_PEOPLE_ANSWER_CARD",
"relatedPeopleAnswerCard": {
"subject": {
"email": "AdamStanford@psincs-test01.newjnj.com",
"displayName": "Adam Stanford"
"manager": {
"email": "simonsais@psincs-test01.newjnj.com"
}
},
"relatedPeople": [{
"email": "EdgarMountainRamirez@psincs-test01.newjnj.com",
"displayName": "Edgar Mountain Ramirez"
}, {
"email": "FranciscoJoseMartinez@psincs-test01.newjnj.com",
"displayName": "Francisco Jose Martinez"
}],
"relationType": "DIRECT_REPORTS",
}
}
}
}]
}
Wyłącz optymalizacje, w tym wyniki uzupełniające
Domyślnie optymalizacje, takie jak wyniki uzupełniające, są włączone. Możesz: należy jednak wyłączyć wszystkie optymalizacje lub tylko wyniki uzupełniające na poziom aplikacji i zapytania:
Aby wyłączyć wszystkie optymalizacje na poziomie wyszukiwarki, w tym w tym wyniki uzupełniające, synonimy i poprawki pisowni,
QueryInterpretationConfig.force_verbatim_mode
dotrue
w wyszukiwarkach.Aby wyłączyć wszystkie optymalizacje na poziomie zapytania, w tym wyniki uzupełniające, synonimy i poprawki pisowni, ustaw
QueryInterpretationOptions.enableVerbatimMode
natrue
w zapytaniu.Aby wyłączyć wyniki uzupełniające na poziomie wyszukiwarki, ustaw
QueryInterpretationOptions.forceDisableSupplementalResults
natrue
w zapytaniu.Aby wyłączyć wyniki uzupełniające na poziomie zapytania, ustaw
QueryInterpretationOptions.disableSupplementalResults
natrue
w zapytaniu.
Fragmenty z najciekawszymi momentami
W przypadku zwracanych elementów zawierających indeksowany tekst lub treść HTML fragment kodu treści. Pomagają one użytkownikom określić trafność zwracanego produktu.
Jeśli fragment kodu zawiera wyszukiwane hasła, oznacza to, zwracana jest również lokalizacja hasła.
Użyj komponentu matchRanges
, aby podświetlić pasujący tekst podczas renderowania
wyniki. Następujący przykładowy kod JavaScript przekształca fragment kodu na
Znaczniki HTML z każdym pasującym zakresem w tagu <span>
.
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ę fragment kodu:
{
"snippet": "This is an example snippet...",
"matchRanges": [
{
"start": 11,
"end": 18
}
]
}
Powstały ciąg znaków HTML to:
This is an <span class="highlight">example</span> snippet...
Wyświetlane metadane
Korzystanie z metadata
pole do wyświetlania dodatkowych informacji o zwróconym produkcie, które mogą być istotne
użytkownikom. Pole metadata
zawiera zmienne createTime
i
updateTime
produktu oraz wszystkie powiązane uporządkowane dane podlegające zwrotom
z danym produktem.
Aby wyświetlić uporządkowane dane, użyj komponentu displayOptions
. Pole displayOptions
zawiera etykietę wyświetlaną typu obiektu
oraz metalines
. Każda metalina jest tablicą etykiet displayowych
pary wartości skonfigurowane w tym schemacie.
Pobierz dodatkowe wyniki
Aby pobrać dodatkowe wyniki, ustaw start
w żądaniu ustaw żądane przesunięcie. Możesz dostosować rozmiar
na każdej stronie z tagiem pageSize
.
Aby wyświetlić liczbę zwróconych elementów lub wyświetlić elementy sterujące stronicowaniem
przeglądania zwróconych produktów, użyj
resultCount
. W zależności od rozmiaru zbioru wyników może to być rzeczywista wartość lub
zostanie podana wartość szacowana.
Sortuj wyniki
Korzystanie z sortOptions
aby określić kolejność zwracanych elementów. Wartość sortOptions
to obiekt z dwoma polami:
operatorName
– operator właściwości uporządkowanych danych, według którego odbywa się sortowanie. W przypadku właściwości z wieloma operatorami możesz sortować tylko według głównej równości .sortOrder
– kierunek sortowania:ASCENDING
lubDESCENDING
.
Trafność służy też jako dodatkowy klucz sortowania. Jeśli nie określono kolejności sortowania wyniki są wyświetlane tylko według trafności.
"sortOptions": {
"operatorName": "priority",
"sortOrder": "DESCENDING"
}
Dodaj filtry
Oprócz wyrażeń zapytań możesz jeszcze bardziej ograniczać wyniki, stosując: filtry. Filtry możesz określić zarówno w wyszukiwarka jak również w żądaniu wyszukiwania.
Aby dodać filtry w żądaniu lub wyszukiwarce, dodaj go w sekcji
dataSourceRestrictions.filterOptions[]
.
Istnieją 2 główne sposoby dalszego filtrowania źródła danych:
- Filtry obiektów za pomocą właściwości
filterOptions[].objectType
– ograniczają dopasowania elementów do określonego typu zdefiniowanego w schemacie niestandardowym. - Filtry wartości – ogranicza dopasowanie elementów na podstawie operator zapytania i podaną wartość.
Filtry złożone Łącz wiele filtrów wartości w wyrażenia logiczne, aby zwiększyć złożonych zapytań.
W przykładzie schematu filmu można zastosować ograniczenie wiekowe na podstawie bieżącego użytkownika i ograniczyć dostępność filmów na podstawie oceny MPAA.
{
"query": "adventure",
"requestOptions": {
"searchApplicationId": "<search_app_id>"
},
"dataSourceRestrictions": [
{
"source": {
"name": "datasources/<data_source_id>"
},
"filterOptions": [
{
"objectType": "movie",
"filter": {
"compositeFilter": {
"logicOperator": "AND"
"subFilters": [
{
"compositeFilter": {
"logicOperator": "OR"
"subFilters": [
{
"valueFilter": {
"operatorName": "rated",
"value": {
"stringValue": "G"
}
}
},
{
"valueFilter": {
"operatorName": "rated",
"value": {
"stringValue": "PG"
}
}
}
]
}
]
}
}
}
]
}
]
}
Zawężanie wyników za pomocą aspektów
Aspekty to właściwości zindeksowane, które reprezentują kategorie do zawężania wyszukiwania wyników. Za pomocą aspektów można ułatwić użytkownikom interaktywne zawężanie zapytań odpowiednie produkty.
Aspekty można zdefiniować w wyszukiwarki. i zastąpiony ustawieniami w zapytaniu.
Gdy żądasz aspektów, Cloud Search oblicza najczęstsze wartości dla właściwości wśród pasujących elementów. Te są zwracane w odpowiedzi. Użyj tych wartości do tworzenia filtrów które zawężają wyniki w kolejnych zapytaniach.
Typowy wzorzec interakcji z aspektami to:
- Wykonaj wstępne zapytanie określające, które właściwości mają zostać uwzględnione w aspektie wyników.
- Renderuj wyniki wyszukiwania i aspektów.
- Użytkownik wybiera co najmniej 1 wartość aspektu, aby zawęzić wyniki.
- Powtórz zapytanie z użyciem filtra opartego na wybranych wartościach.
Aby na przykład doprecyzować zapytania dotyczące filmów według roku i oceny MPAA,
uwzględnij w zapytaniu właściwość facetOptions
.
"facetOptions": [
{
"sourceName": "datasources/<data_source_id>",
"operatorName": "year"
},
{
"sourceName": "datasources/<data_source_id>",
"operatorName": "rated"
}
]
Wyniki aspektu z polami zawierającymi liczby całkowite
Możesz też ustalać aspekty żądań za pomocą pól zawierających liczby całkowite. Na przykład:
może oznaczyć właściwość liczby całkowitej o nazwie book_pages
jako dostępną do aspektu w celu doprecyzowania
wyniki wyszukiwania książek z wartością „100–200” .
Podczas konfigurowania schematu pola właściwości z liczbą całkowitą ustaw
isFacetable
do true
i dodaj odpowiednie opcje grupowania do
integerPropertyOptions
Dzięki temu każda właściwość z możliwością przedstawiania liczb całkowitych ma domyślne zasobniki
zdefiniowanych opcji.
Podczas definiowania logiki opcji zasobnika podaj tablicę wartości przyrostowych
zakresów symbolizujących. Jeśli na przykład użytkownik określi zakresy jako
2, 5, 10, 100
, potem aspekty dla <2
, [2-5)
, [5-10)
, [10-100)
, >=100
Możesz zastąpić aspekty oparte na liczbach całkowitych, definiując te same opcje grupowania w
facetOptions
do danego wniosku. W razie potrzeby Cloud Search używa opcji grupowania zdefiniowanych w
schemat, gdy ani wyszukiwarka, ani żądanie zapytania nie mają aspektu
zdefiniowanych opcji. Aspekty zdefiniowane w zapytaniu mają pierwszeństwo przed aspektami zdefiniowanymi
w wyszukiwarce, a aspekty zdefiniowane w wyszukiwarce przyjmą
nad aspektami zdefiniowanymi w schemacie.
Wyniki aspektu według rozmiaru lub daty dokumentu
Za pomocą
zastrzeżone operatory
zawężać wyniki wyszukiwania według rozmiaru pliku dokumentu,
mierzonego w bajtach lub
dokument został utworzony lub zmodyfikowany. Nie musisz definiować schematu niestandardowego,
ale musisz określić wartość operatorName
w polu wyszukiwania
FacetOptions
- Aby ustawić podział na aspekty według rozmiaru dokumentu, użyj właściwości
itemsize
i zdefiniuj opcje grupowania. - Do określania aspektów według daty utworzenia dokumentu użyj
createddatetimestamp
. - Do określania aspektów według daty modyfikacji dokumentu użyj wartości
lastmodified
.
Interpretowanie zasobników aspektów
facetResults
właściwość w odpowiedzi na zapytanie zawiera dokładne żądanie filtra użytkownika
w polu filter
dla każdego
bucket
W przypadku aspektów, które nie są oparte na liczbach całkowitych, facetResults
zawiera wpis dla
dla każdej żądanej usługi. Dla każdej właściwości znajduje się lista wartości lub zakresów,
buckets
. Wartości, które pojawiają się najczęściej, są podawane jako pierwsze.
Gdy użytkownik wybierze co najmniej 1 wartość filtra, utwórz nowe zapytanie, używając wybrane filtry i ponownie wysłać zapytanie do interfejsu API.
Dodaj sugestie
Korzystanie z interfejsu API suggest aby umożliwić autouzupełnianie zapytań na podstawie danych osobowych użytkownika a także historię zapytań, a także kontakty i ich korpus dokumentów.
Na przykład to wywołanie podaje sugestie dotyczące częściowych wyrażenie jo.
{
"query": "jo",
"requestOptions": {
"searchApplicationId": "<search_app_id>",
"peoplePhotoOptions": {
"peoplePhotoUrlSizeInPx": 32
},
"timeZone": "America/Denver"
}
}
Można następnie wyświetlić uzyskane sugestie odpowiednio do aplikacji.