Schemat Google Cloud Search to struktura JSON, która określa obiekty, właściwości i opcje indeksowania danych oraz wysyłania zapytań. Łącznik treści używa zarejestrowanego schematu do strukturyzowania i indeksowania danych repozytorium.
Aby utworzyć schemat, prześlij do interfejsu API obiekt schematu JSON. Przed indeksowaniem danych musisz zarejestrować schemat dla każdego repozytorium.
W tym dokumencie opisujemy podstawy tworzenia schematu. Aby zoptymalizować wyszukiwanie, przeczytaj artykuł Poprawianie jakości wyszukiwania.
Tworzenie schematu
Aby utworzyć schemat Cloud Search:
- Określ oczekiwane zachowanie użytkowników
- Zainicjuj źródło danych
- Zdefiniuj obiekty
- Zdefiniuj właściwości obiektów
- Zarejestruj schemat
- Zindeksuj dane
- Przetestuj schemat
- Dostosuj schemat
Określ oczekiwane zachowanie użytkowników
Przewidywanie sposobu wyszukiwania przez użytkowników pomaga określić strategię schematu. W przypadku bazy danych filmów użytkownicy mogą wyszukiwać np. „filmy z Robertem Redfordem”. Twój schemat musi obsługiwać zapytania o filmy z określonym aktorem.
Aby dopasować schemat do zachowania użytkowników:
- Oceń różne zapytania od różnych użytkowników.
- Określ logiczne zbiory danych, czyli obiekty, takie jak „film”.
- Określ właściwości (atrybuty), takie jak tytuł czy data premiery.
- Określ prawidłowe wartości właściwości, takie jak „Poszukiwacze zaginionej arki”.
- Określ potrzeby dotyczące sortowania i rankingu, takie jak kolejność chronologiczna czy oceny użytkowników.
- Określ właściwości kontekstu, takie jak stanowisko, aby ulepszyć sugestie autouzupełniania.
- Utwórz listę tych obiektów, właściwości i przykładowych wartości. Użyj tej listy, aby określić opcje operatora.
Zainicjuj źródło danych
Źródło danych reprezentuje zindeksowane dane repozytorium przechowywane w Google Cloud. Więcej informacji znajdziesz w artykule Zarządzanie źródłami danych innych firm. Gdy użytkownik kliknie wynik, Cloud Search przekieruje go do elementu za pomocą adresu URL z żądania indeksowania.
Zdefiniuj obiekty
Obiekt to podstawowa jednostka schematu. Obiektami są struktury logiczne, takie jak „film” czy „osoba”. Każdy obiekt ma właściwości , takie jak tytuł, czas trwania czy nazwa.
Schemat to lista
definicji obiektów w tagu objectDefinitions.
{
"objectDefinitions": [
{ "name": "movie" },
{ "name": "person" }
]
}
Używaj unikalnych nazw każdego obiektu, np. movie. Usługa schematu używa tych nazw jako kluczy. Więcej informacji znajdziesz w artykule
ObjectDefinition.
Zdefiniuj właściwości obiektów
Zdefiniuj właściwości, takie jak tytuł i data premiery, w sekcji propertyDefinitions. Użyj
options
w przypadku
freshnessOptions
(ranking) i
displayOptions
(etykiety interfejsu).
{
"objectDefinitions": [{
"name": "movie",
"propertyDefinitions": [
{
"name": "movieTitle",
"isReturnable": true,
"textPropertyOptions": {
"retrievalImportance": { "importance": "HIGHEST" },
"operatorOptions": { "operatorName": "title" }
},
"displayOptions": { "displayLabel": "Title" }
},
{
"name": "releaseDate",
"isReturnable": true,
"isSortable": true,
"datePropertyOptions": {
"operatorOptions": {
"operatorName": "released",
"lessThanOperatorName": "releasedbefore",
"greaterThanOperatorName": "releasedafter"
}
}
}
]
}]
}
PropertyDefinition obejmuje:
- Ciąg znaków
name. - Opcje niezależne od typu (np.
isReturnable). - Typ i opcje specyficzne dla typu (np.
textPropertyOptions). operatorOptionsdla operatorów wyszukiwania.displayOptionsdla etykiet interfejsu.
Możesz ponownie używać nazw właściwości w różnych obiektach. Na przykład movieTitle
może występować zarówno w obiekcie movie, jak i w filmografii obiektu person.
Dodawanie opcji niezależnych od typu
PropertyDefinition
obejmuje opcje logiczne, które umożliwiają skonfigurowanie funkcji wyszukiwania dla właściwości,
niezależnie od jej typu. Te opcje mają domyślnie wartość false i aby można było ich używać, należy ustawić je na true.
isReturnable: ustaw natrue, jeśli dane właściwości mają być zwracane w wynikach wyszukiwania za pomocą interfejsu Query API. Właściwości, których nie można zwrócić, mogą być używane do wyszukiwania lub rankingu bez wyświetlania w wynikach.isRepeatable: ustaw natrue, jeśli właściwość może mieć wiele wartości. Na przykład film ma jedną datę premiery, ale wielu aktorów.isSortable: ustaw natrue, jeśli właściwość może być używana do sortowania. Nie może mieć wartościtrue, jeśliisRepeatablema wartośćtruelub jeśli właściwość znajduje się w powtarzalnym obiekcie podrzędnym.isFacetable: ustaw natrue, jeśli właściwość może być używana do generowania aspektów (atrybutów używanych do zawężania wyników wyszukiwania).- Wymaga, aby
isReturnablemiało wartośćtrue. - Obsługiwane tylko w przypadku właściwości typu enum, logicznych i tekstowych.
- Wymaga, aby
isWildcardSearchable: ustaw natrue, aby umożliwić użytkownikom wyszukiwanie z użyciem symboli wieloznacznych w tej właściwości. Ta opcja jest dostępna tylko w przypadku właściwości tekstowych, a jej działanie zależy od ustawieniaexactMatchWithOperator:- Jeśli
exactMatchWithOperatorma wartośćtrue: wartość tekstowa jest traktowana jako pojedynczy token. Zapytanie takie jakscience-*pasuje do wartościscience-fiction. - Jeśli
exactMatchWithOperatorma wartośćfalse: wartość tekstowa jest tokenizowana. Zapytanie takie jaksci*lubfi*pasuje doscience-fiction, alescience-*już nie.
- Jeśli
Określanie typu
Ustaw typ danych, definiując odpowiedni obiekt opcji właściwości (np. textPropertyOptions). Jeśli znasz wszystkie możliwe wartości, użyj wyliczeń (enumPropertyOptions). Właściwość może mieć tylko 1 typ danych.
Określanie opcji operatora
operatorOptions opisują, jak właściwość działa jako operator wyszukiwania.
Każdy operatorOptions wymaga operatorName (np. title). Jest to
parametr, który użytkownicy wpisują w zapytaniach (np. title:titanic). Używaj intuicyjnych nazw
i udostępniaj je użytkownikom.
Możesz udostępniać operatorName we właściwościach tego samego typu. Zapytania używające tej nazwy pobierają wyniki ze wszystkich pasujących właściwości.
Właściwości, które można sortować, mogą zawierać lessThanOperatorName i greaterThanOperatorName w przypadku zapytań porównawczych. Właściwości tekstowe mogą używać exactMatchWithOperator, aby traktować całą wartość jako pojedynczy token.
Dodawanie opcji wyświetlania
Opcjonalna sekcja displayOptions zawiera displayLabel. Jest to przyjazna dla użytkownika etykieta wyświetlana w wynikach wyszukiwania.
Dodawanie operatorów filtrowania sugestii
Użyj suggestionFilteringOperators[], aby zdefiniować właściwość, która filtruje sugestie autouzupełniania (np. filtrowanie sugestii filmów według preferowanego gatunku użytkownika). Możesz zdefiniować tylko 1 filtr sugestii.
Zarejestruj schemat
Zarejestruj schemat w usłudze schematu za pomocą identyfikatora źródła danych. Wyślij żądanie UpdateSchema:
PUT https://cloudsearch.googleapis.com/v1/indexing/{name=datasources/*}/schema
Aby przetestować schemat bez jego rejestrowania, użyj validateOnly: true.
Zindeksuj dane
Po rejestracji wypełnij źródło danych za pomocą Index wywołań, zwykle za pomocą łącznika.
Przykładowe żądanie indeksowania:
{
"name": "datasource/<data_source_id>/items/titanic",
"metadata": {
"title": "Titanic",
"objectType": "movie"
},
"structuredData": {
"object": {
"properties": [{
"name": "movieTitle",
"textValues": { "values": ["Titanic"] }
}]
}
},
"itemType": "CONTENT_ITEM"
}
Przetestuj schemat
Przed wdrożeniem przetestuj schemat w małym repozytorium. Utwórz listę ACL, która ogranicza wyniki do użytkownika testowego.
- Ogólne zapytanie: wyszukaj ciąg znaków (np. „titanic”), aby zobaczyć wszystkie pasujące elementy.
- Zapytanie z operatorem: użyj operatora (np.
actor:Zane), aby ograniczyć wyniki.
Dostosuj schemat
Monitoruj opinie użytkowników i dostosuj schemat. Możesz indeksować nowe pola lub zmieniać nazwy operatorów, aby były bardziej intuicyjne.
Ponowne indeksowanie po zmianie schematu
Nie musisz ponownie indeksować w przypadku zmian:
- Nazwy operatorów.
- Limity liczbowe.
- Ranking uporządkowany.
- Opcje świeżości lub wyświetlania.
Musisz ponownie indeksować w przypadku:
- Dodawanie lub usuwanie właściwości albo obiektów.
- Zmiana
isReturnable,isFacetablelubisSortablenatrue. - Oznaczanie właściwości jako
isSuggestable.
Niedozwolone zmiany właściwości
Niedozwolone są zmiany, które powodują uszkodzenie indeksu lub niespójne wyniki, w tym:
- Typ danych lub nazwa właściwości.
- Ustawienia
exactMatchWithOperatorlubretrievalImportance.
Wprowadzanie złożonych zmian w schemacie
Aby wprowadzić niedozwoloną zmianę, przenieś właściwości ze starej definicji do nowej:
- Dodaj do schematu nową właściwość o innej nazwie.
- Zarejestruj schemat z nowymi i starymi właściwościami.
- Wypełnij indeks wstecznie, używając tylko nowej właściwości.
- Usuń starą właściwość ze schematu.
- Zaktualizuj kod zapytania, aby używać nowej nazwy właściwości.
Cloud Search przechowuje usunięte elementy przez 30 dni, aby zapobiec problemom z ponownym użyciem.
Limity rozmiaru
- Maksymalnie 10 obiektów najwyższego poziomu.
- Maksymalna głębokość 10 poziomów.
- Maksymalnie 1000 pól na obiekt (w tym pola zagnieżdżone).
Następne kroki
- Tworzenie interfejsu wyszukiwania.
- Poprawianie jakości wyszukiwania.
- Strukturyzowanie schematu w celu optymalnego interpretowania zapytań.
- Definiowanie synonimów.