Tworzenie i rejestrowanie schematu

Schemat Google Cloud Search to struktura JSON, która definiuje obiekty, właściwości i opcje indeksowania danych oraz wysyłania zapytań o nie. Łącznik treści używa zarejestrowanego schematu do strukturyzowania i indeksowania danych z repozytorium.

Schemat tworzysz, przekazując do interfejsu API obiekt schematu JSON. Przed indeksowaniem danych musisz zarejestrować schemat dla każdego repozytorium.

W tym dokumencie znajdziesz podstawowe informacje o tworzeniu schematów. Aby zoptymalizować wyszukiwanie, zapoznaj się z artykułem Poprawianie jakości wyszukiwania.

Tworzenie schematu

Aby utworzyć schemat Cloud Search, wykonaj te czynności:

  1. Określanie oczekiwanych zachowań użytkowników
  2. Inicjowanie źródła danych
  3. Określ obiekty
  4. Definiowanie właściwości obiektu
  5. Rejestrowanie schematu
  6. Indeksowanie danych
  7. Testowanie schematu
  8. Dostrajanie schematu

Określanie oczekiwanych zachowań użytkowników

Przewidywanie sposobu wyszukiwania przez użytkowników pomaga określić strategię dotyczącą schematu. W przypadku bazy danych filmów użytkownicy mogą wyszukiwać „filmy z Robertem Redfordem”. Twój schemat musi obsługiwać zapytania dotyczące filmów z określonym aktorem.

Aby dopasować schemat do zachowań użytkowników:

  1. Oceniaj różne zapytania od różnych użytkowników.
  2. Identyfikuj logiczne zbiory danych, czyli obiekty, takie jak „film”.
  3. Identyfikuj właściwości (atrybuty) takie jak tytuł czy data premiery.
  4. Określ prawidłowe wartości właściwości, np. „Poszukiwacze zaginionej arki”.
  5. Określ potrzeby w zakresie sortowania i rankingu, np. kolejność chronologiczna lub oceny odbiorców.
  6. Określ właściwości kontekstu, takie jak stanowisko, aby ulepszyć sugestie autouzupełniania.
  7. Wymień te obiekty, właściwości i przykładowe wartości. Użyj tej listy, aby określić opcje operatora.

Inicjowanie źródła danych

Źródło danych reprezentuje zindeksowane dane repozytorium przechowywane w Google Cloud. Zobacz Zarządzanie zewnętrznymi źródłami danych. Gdy użytkownik kliknie wynik, Cloud Search przekieruje go do elementu, używając adresu URL z żądania indeksowania.

Określ obiekty

Obiekt to podstawowa jednostka schematu. Struktury logiczne, takie jak „film” lub „osoba”, są obiektami. Każdy obiekt ma właściwości, takie jak tytuł, czas trwania czy nazwa.

Rysowanie połączeń schematu między encjami
Rysunek 1. Przykładowy schemat z 2 obiektami i podobiektem.

Schemat to lista definicji obiektów w tagu objectDefinitions.

{
  "objectDefinitions": [
    { "name": "movie" },
    { "name": "person" }
  ]
}

Używaj unikalnych nazw dla każdego obiektu, np. movie. Usługa schematu używa tych nazw jako kluczy. Zobacz ObjectDefinition.

Określanie właściwości obiektu

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 zawiera:

  • Ciąg znaków name.
  • Opcje niezależne od typu (np. isReturnable).
  • typ i opcje specyficzne dla danego typu (np. textPropertyOptions).
  • operatorOptions – operatory wyszukiwania.
  • displayOptions w przypadku etykiet interfejsu.

Możesz ponownie używać nazw właściwości w różnych obiektach. Na przykład movieTitle może pojawić się w filmografii zarówno obiektu movie, jak i obiektu person.

Dodawanie opcji niezależnych od typu

PropertyDefinition zawiera opcje logiczne do konfigurowania funkcji wyszukiwania w usłudze, niezależnie od jej typu. Te opcje mają domyślnie wartość false i muszą mieć wartość true, aby można było ich używać.

  • isReturnable: ustaw na true, jeśli dane usługi 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 określania rankingu bez pojawiania się w wynikach.
  • isRepeatable: ustaw na true, 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 na true, jeśli właściwość może być używana do sortowania. Nie może mieć wartości true, jeśli isRepeatable ma wartość true lub jeśli właściwość znajduje się w powtarzalnym obiekcie podrzędnym.
  • isFacetable: ustaw na true, 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 wartość isReturnable wynosiła true.
    • Obsługiwane tylko w przypadku właściwości typu wyliczeniowego, logicznego i tekstowego.
  • isWildcardSearchable: ustaw wartość true, aby umożliwić użytkownikom przeprowadzanie wyszukiwań z symbolami wieloznacznymi 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 ustawienia exactMatchWithOperator:
    • Jeśli exactMatchWithOperator to true: wartość tekstowa jest traktowana jako pojedynczy token. Zapytanie takie jak science-* pasuje do wartości science-fiction.
    • Jeśli exactMatchWithOperator ma wartość false: wartość tekstowa jest tokenizowana. Zapytanie takie jak sci* lub fi* pasuje do science-fiction, ale science-* już nie.

Określ typ

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). Usługa może mieć tylko 1 typ danych.

Definiowanie opcji operatora

operatorOptions wyjaśnij, jak właściwość działa jako operator wyszukiwania;

Każdy operatorOptions potrzebuje 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 w usługach tego samego typu. Zapytania używające tej nazwy pobierają wyniki ze wszystkich pasujących usług.

Właściwości, według których można sortować, mogą obejmować lessThanOperatorNamegreaterThanOperatorName 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.

Rejestrowanie schematu

Zarejestruj schemat w usłudze schematów za pomocą identyfikatora źródła danych. Wyślij żądanie UpdateSchema:

PUT https://cloudsearch.googleapis.com/v1/indexing/{name=datasources/*}/schema

Użyj validateOnly: true, aby przetestować schemat bez rejestrowania go.

Indeksowanie danych

Po rejestracji wypełnij źródło danych za pomocą wywołań Index, zwykle za pomocą łącznika.

Przykładowa prośba o zindeksowanie:

{
  "name": "datasource/<data_source_id>/items/titanic",
  "metadata": {
    "title": "Titanic",
    "objectType": "movie"
  },
  "structuredData": {
    "object": {
      "properties": [{
        "name": "movieTitle",
        "textValues": { "values": ["Titanic"] }
      }]
    }
  },
  "itemType": "CONTENT_ITEM"
}

Testowanie schematu

Przed wdrożeniem w środowisku produkcyjnym przetestuj małe repozytorium. Utwórz listę ACL, która ogranicza wyniki do użytkownika testowego.

  • Ogólne zapytanie: wyszukaj ciąg znaków (np. „titanic”), aby wyświetlić wszystkie pasujące elementy.
  • Zapytanie z operatorem: użyj operatora (np. actor:Zane), aby ograniczyć liczbę wyników.

Dostosowywanie schematu

Monitoruj opinie użytkowników i dostosowuj 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ć, aby wprowadzić zmiany w tych elementach:

  • Nazwy operatorów.
  • Limity liczbowe.
  • Ranking zamówień.
  • opcje odświeżania lub wyświetlania.

Musisz ponownie zindeksować:

  • dodawanie i usuwanie usług lub obiektów;
  • Zmiana isReturnable, isFacetable lub isSortable na true.
  • Oznaczanie usługi isSuggestable.

Niedozwolone zmiany właściwości

Zmiany, które powodują uszkodzenie indeksu lub niespójne wyniki, są niedozwolone. Obejmują one:

  • Typ danych lub nazwa właściwości.
  • exactMatchWithOperator lub retrievalImportance.

Wprowadzanie złożonych zmian w schemacie

Aby wprowadzić niedozwoloną zmianę, przenieś właściwości ze starej definicji do nowej:

  1. Dodaj do schematu nową właściwość o innej nazwie.
  2. Zarejestruj schemat z nowymi i starymi właściwościami.
  3. Wypełnij indeks, używając tylko nowej właściwości.
  4. Usuń starą właściwość ze schematu.
  5. Zaktualizuj kod zapytania, aby używać nowej nazwy usługi.

Cloud Search przechowuje usunięte elementy przez 30 dni, aby zapobiec problemom z ponownym wykorzystaniem.

Ograniczenia rozmiaru

  • Maksymalnie 10 obiektów najwyższego poziomu.
  • Maksymalna głębokość to 10 poziomów.
  • Maksymalnie 1000 pól na obiekt (w tym pola zagnieżdżone).

Następne kroki

  1. Utwórz interfejs wyszukiwania.
  2. Popraw jakość wyszukiwania.
  3. Strukturyzuj schemat, aby zapewnić optymalną interpretację zapytań.
  4. Określ synonimy.