Kolejki indeksowania Google Cloud Search

Pakiet SDK oprogramowania sprzęgającego i interfejs Cloud Search API obsługują tworzenie kolejek indeksowania Cloud Search. Używaj tych kolejek, aby:

  • utrzymywać stan poszczególnych dokumentów (stan, skróty itp.), aby indeks był aktualny;
  • utrzymywać listę elementów do zindeksowania, które zostały wykryte podczas przechodzenia;
  • ustalać priorytety elementów na podstawie ich stanu;
  • utrzymywać informacje o stanie, takie jak punkty kontrolne i tokeny zmian.

Kolejka to etykieta przypisana do zindeksowanego elementu (np. „default”).

Stan i priorytet

Priorytet dokumentu zależy od jego ItemStatus kodu. Możliwe kody w kolejności priorytetu (od najwyższego do najniższego):

  • ERROR – element napotkał błąd asynchroniczny i wymaga ponownego zindeksowania.
  • MODIFIED– element został wcześniej zindeksowany, ale uległ zmianie w repozytorium.
  • NEW_ITEM – element nie został jeszcze zindeksowany.
  • ACCEPTED – element został wcześniej zindeksowany i nie uległ zmianie.

W przypadku elementów o tym samym stanie wyższy priorytet mają te, które są w kolejce najdłużej.

Indeksowanie nowego lub zmienionego elementu

Rysunek 1 przedstawia kroki indeksowania nowego lub zmienionego elementu za pomocą kolejki indeksowania. Te kroki odzwierciedlają wywołania interfejsu REST API. Odpowiedniki w pakiecie SDK znajdziesz w sekcji Operacje na kolejkach (pakiet SDK oprogramowania sprzęgającego).

Omówienie indeksowania w Cloud Search
Rysunek 1. Kroki indeksowania, aby dodać lub zaktualizować element
  1. Łącznik treści używa items.push aby umieścić metadane i hasze w kolejce.
    • Jeśli oprogramowanie sprzęgające zawiera push type lub contentHash, Cloud Search określa stan.
    • Nieznane elementy otrzymują stan NEW_ITEM.
    • Istniejące elementy z pasującymi skrótami pozostają w stanie ACCEPTED.
    • Istniejące elementy z różnymi skrótami zmieniają stan na MODIFIED.
  2. Oprogramowanie sprzęgające używa items.poll aby określić, które elementy mają zostać zindeksowane. Cloud Search zwraca elementy w kolejności priorytetu.
  3. Oprogramowanie sprzęgające pobiera elementy z repozytorium i tworzy żądania interfejsu Index API.
  4. Oprogramowanie sprzęgające używa items.index aby zindeksować elementy. Po pomyślnym przetworzeniu element przechodzi w stan ACCEPTED.

Usuwanie elementu

Strategia pełnego przechodzenia używa 2 kolejek do indeksowania elementów i wykrywania usunięć. Rysunek 2 przedstawia drugie przejście w tej strategii.

Omówienie indeksowania w Cloud Search
Rysunek 2. Usuwanie elementów
  1. Podczas pierwszego przejścia oprogramowanie sprzęgające umieszcza elementy w „kolejce A” jako NEW_ITEM. Każdy element otrzymuje etykietę „A”.
  2. Oprogramowanie sprzęgające odpytuje kolejkę A i indeksuje elementy.
  3. Podczas drugiego pełnego przejścia oprogramowanie sprzęgające umieszcza elementy w „kolejce B”.
    • Nieznane elementy otrzymują etykietę „B” i stan NEW_ITEM.
    • Istniejące elementy z pasującymi skrótami zmieniają etykietę na „B” i pozostają w stanie ACCEPTED.
    • Istniejące elementy z różnymi skrótami zmieniają etykietę na „B” i stan na MODIFIED.
  4. Oprogramowanie sprzęgające odpytuje kolejkę B i indeksuje elementy.
  5. Na koniec oprogramowanie sprzęgające wywołuje metodę deleteQueueItems w kolejce A. Powoduje to usunięcie wszystkich wcześniej zindeksowanych elementów, które nadal mają etykietę „A”.
  6. Podczas kolejnych przejść role obu kolejek są zamieniane.

Operacje na kolejkach (pakiet SDK oprogramowania sprzęgającego)

Aby umieścić elementy w kolejce, użyj narzędzia do tworzenia pushItems. Pakiet SDK automatycznie pobiera elementy z kolejki w kolejności priorytetu za pomocą klasy Repository's getDoc metody.

Operacje na kolejkach (interfejs REST API)

  • Aby umieścić element w kolejce, użyj metody Items.push.
  • Aby odpytać kolejkę, użyj metody Items.poll.

Podczas indeksowania możesz też użyć metody Items.index aby umieścić elementy w kolejce. Te elementy automatycznie otrzymują stan ACCEPTED.

Items.push

Ta metoda dodaje identyfikatory do kolejki. type określa wynik. Umieszczenie w kolejce nowego identyfikatora powoduje dodanie wpisu ze stanem NEW_ITEM. Opcjonalny ładunek jest zwracany podczas odpytywania.

Odpytywane elementy są zarezerwowane i nie mogą być zwracane przez inne wywołania odpytywania. Użycie metody Items.push z wartością type ustawioną na NOT_MODIFIED, REPOSITORY_ERROR lub REQUEUE zwalnia rezerwację wpisów.

Items.push ze skrótami

W żądaniu umieszczenia w kolejce określ skróty metadanych lub treści. Cloud Search porównuje je z zapisanymi wartościami. Jeśli wartości się nie zgadzają, wpis zmienia stan na MODIFIED. Niezgodne identyfikatory, które nie istnieją, zmieniają stan na NEW_ITEM.

Items.poll

Ta metoda pobiera wpisy o wysokim priorytecie. Każdy zwrócony wpis jest zarezerwowany do momentu, gdy upłynie jego limit czasu, zostanie ponownie zindeksowany lub zostanie zwolniony za pomocą metody Items.push.