Kolejki indeksowania Google Cloud Search

Pakiet SDK oprogramowania sprzęgającego i interfejs Google Cloud Search API umożliwiają tworzenie kolejek indeksowania Cloud Search służących do wykonywania tych zadań:

  • Zachowuj stan poszczególnych dokumentów (stan, wartości skrótu itd.), który może służyć do synchronizacji indeksu z repozytorium.

  • Prowadź listę elementów do indeksowania jako wykrytych podczas procesu przemierzania.

  • Nadaj priorytet elementom w kolejkach na podstawie ich stanu.

  • Przechowuj dodatkowe informacje o stanie, aby usprawnić integrację, takie jak punkty kontrolne, token zmiany itp.

Kolejka to etykieta przypisana do zindeksowanego elementu, np. „default” w przypadku kolejki domyślnej lub „B” w przypadku kolejki B.

Stan i priorytet

Priorytet dokumentu w kolejce zależy od jego kodu ItemStatus. Oto możliwe kody ItemStatus w kolejności ich priorytetu (obsługiwane od pierwszego do ostatniego):

  • ERROR – podczas procesu indeksowania wystąpił błąd asynchroniczny, który wymaga ponownego zindeksowania.

  • MODIFIED – element, który został wcześniej zindeksowany i od tego czasu został zmodyfikowany w repozytorium od ostatniego indeksowania.

  • NEW_ITEM – element, który nie został zindeksowany.

  • ACCEPTED – dokument, który został wcześniej zindeksowany i nie zmienił się w repozytorium od ostatniego indeksowania.

Jeśli 2 elementy w kolejce mają ten sam stan, te elementy, które znajdują się w kolejce najdłużej, mają wyższy priorytet.

Omówienie korzystania z kolejek indeksowania do indeksowania nowego lub zmienionego elementu

Na Rysunku 1 przedstawiamy proces indeksowania nowego lub zmienionego elementu za pomocą kolejki indeksowania. Te kroki pokazują wywołania interfejsu API REST. Odpowiednie wywołania pakietu SDK znajdziesz w artykule o operacjach w kolejce (pakiet SDK oprogramowania sprzęgającego).

Omówienie indeksowania w Google Cloud Search
Rysunek 1. Procedura indeksowania w celu dodania lub zaktualizowania elementu
  1. Oprogramowanie sprzęgające treści używa items.push do przesyłania elementów (metadanych i hashtagu) do kolejki indeksowania w celu ustalenia stanu elementu (MODIFIED, NEW_ITEM, DELETED). W szczególności:

    • Podczas wypychania oprogramowanie sprzęgające jawnie zawiera kod push type lub contentHash.
    • Jeśli oprogramowanie sprzęgające nie zawiera parametru type, Cloud Search automatycznie określa stan elementu za pomocą contentHash.
    • Jeśli produkt jest nieznany, stan jest ustawiany na NEW_ITEM.
    • Jeśli element istnieje, a wartości skrótu są zgodne, stan zostaje zachowany jako ACCEPTED.
    • Jeśli element istnieje, a hasła różnią się, stan zmieni się na MODIFIED.

    Więcej informacji na temat określania stanu elementu znajdziesz w przykładowym kodzie Przemierzanie repozytoriów GitHub w samouczku wprowadzającym do Cloud Search.

    Zwykle ruch push jest powiązany z procesami przemierzania treści i wykrywania zmian w oprogramowaniu sprzęgającym.

  2. Oprogramowanie sprzęgające treści używa items.poll do odpytywania kolejki w celu określenia elementów do zindeksowania. Cloud Search informuje oprogramowanie sprzęgające, które elementy najbardziej wymagają indeksowania, posortowane najpierw według kodu stanu, a następnie według czasu w kolejce.

  3. Oprogramowanie sprzęgające pobiera te elementy z repozytorium i tworzy żądania do interfejsu API indeksu.

  4. Oprogramowanie sprzęgające używa do indeksowania elementów items.index. Element przechodzi do stanu ACCEPTED dopiero wtedy, gdy Cloud Search zakończy jego przetwarzanie.

Oprogramowanie sprzęgające może też usunąć element, jeśli nie ma go już w repozytorium, albo przekazać element ponownie, jeśli nie został zmodyfikowany lub wystąpił błąd repozytorium źródłowego. Informacje o usuwaniu elementów znajdziesz w następnej sekcji.

Omówienie korzystania z kolejek indeksowania do usuwania elementu

Strategia z pełnym przemierzaniem korzysta z procesu składającego się z 2 kolejek do indeksowania elementów i wykrywania usunięć. Na Rysunku 2 przedstawiamy proces usuwania elementu przy użyciu 2 kolejek indeksowania. Szczegółowo to rysunek 2 przedstawia drugie przemierzanie zrealizowane przy użyciu strategii pełnego przemierzania. Te kroki wykorzystują wywołania interfejsu API REST. Odpowiednie wywołania pakietu SDK znajdziesz w sekcji Operacje kolejki (SDK).

Omówienie indeksowania w Google Cloud Search
Rysunek 2. Usuwanie elementów
  1. Podczas wstępnego przemierzania oprogramowanie sprzęgające treści używa elementu items.push, aby przekazać elementy (metadane i hasz) do kolejki indeksowania („kolejka A” jako NEW_ITEM, ponieważ nie ma jej w kolejce). Każdy element ma przypisaną etykietę „A” do „kolejki A”. Treść jest indeksowana w Cloud Search.

  2. Oprogramowanie sprzęgające treści używa items.poll do odpytywania kolejki A w celu określenia elementów do zindeksowania. Cloud Search informuje oprogramowanie sprzęgające, które elementy najbardziej wymagają indeksowania, posortowane najpierw według kodu stanu, a następnie według czasu w kolejce.

  3. Oprogramowanie sprzęgające pobiera te elementy z repozytorium i tworzy żądania do interfejsu API indeksu.

  4. Oprogramowanie sprzęgające używa do indeksowania elementów items.index. Element przechodzi do stanu ACCEPTED dopiero wtedy, gdy Cloud Search zakończy jego przetwarzanie.

  5. Metoda deleteQueueItems jest wywoływana w kolejce B. Jednak nie zostały przeniesione do kolejki B, więc nic nie da się usunąć.

  6. Przy drugim pełnym przemierzeniu oprogramowanie sprzęgające treści używa items.push do wypychania elementów (metadanych i szyfrowania) do kolejki B:

    • Podczas wypychania oprogramowanie sprzęgające jawnie zawiera kod push type lub contentHash.
    • Jeśli oprogramowanie sprzęgające nie zawiera parametru type, Cloud Search automatycznie określa stan elementu za pomocą contentHash.
    • Jeśli element jest nieznany, stan elementu jest ustawiany na NEW_ITEM, a etykieta kolejki zmienia się na „B”.
    • Jeśli element istnieje, a wartości skrótu są zgodne, stan zostaje zachowany na ACCEPTED, a etykieta kolejki zmienia się na „B”.
    • Jeśli element istnieje, a wartości hash są różne, stan przyjmuje wartość MODIFIED, a etykieta kolejki zmienia się na „B”.
  7. Oprogramowanie sprzęgające treści używa items.poll do odpytywania kolejki w celu określenia elementów do zindeksowania. Cloud Search informuje oprogramowanie sprzęgające, które elementy najbardziej wymagają indeksowania, posortowane najpierw według kodu stanu, a następnie według czasu w kolejce.

  8. Oprogramowanie sprzęgające pobiera te elementy z repozytorium i tworzy żądania do interfejsu API indeksu.

  9. Oprogramowanie sprzęgające używa do indeksowania elementów items.index. Element przechodzi do stanu ACCEPTED dopiero wtedy, gdy Cloud Search zakończy jego przetwarzanie.

  10. Na koniec deleteQueueItems jest wywoływany w kolejce A w celu usunięcia wszystkich wcześniej zindeksowanych elementów CCloud Search, które nadal mają etykietę „A” kolejki.

  11. Przy kolejnych pełnych próbach kolejka używana do indeksowania i kolejka używana do usuwania są zastępowane.

Operacje w kolejce (pakiet SDK oprogramowania sprzęgającego)

Pakiet SDK Content Connector udostępnia operacje wypychania elementów do kolejki i pobierania ich z niej.

Aby spakować element i przekazać go do kolejki, użyj klasy konstruktora pushItems.

Pobieranie elementów z kolejki do przetworzenia nie wymaga żadnych działań. Zamiast tego pakiet SDK automatycznie pobiera elementy z kolejki według priorytetu, korzystając z metody getDoc klasy Repository.

Operacje kolejki (API typu REST)

Interfejs API REST udostępnia 2 metody przekazywania elementów do kolejki i ich pobierania z kolejki:

  • Aby przekazać element do kolejki, użyj Items.push.
  • Aby dodać elementy do kolejki, użyj Items.poll.

Możesz też użyć Items.index, aby przekazać elementy do kolejki podczas indeksowania. Elementy przekazane do kolejki podczas indeksowania nie wymagają type i automatycznie otrzymują stan ACCEPTED.

Items.push

Metoda Items.push dodaje identyfikatory do kolejki. Tę metodę można wywołać z określoną wartością type, która określa wynik operacji push. Listę wartości type znajdziesz w polu item.type metody Items.push.

Przekazywanie nowego identyfikatora powoduje dodanie nowego wpisu z kodem NEW_ITEM ItemStatus.

Opcjonalny ładunek jest zawsze przechowywany, traktowany jako wartość nieprzejrzysta, i zwracany z Items.poll.

Sondowany element jest zarezerwowany, co oznacza, że nie może zostać zwrócony przez inne wywołanie metody Items.poll. Użycie właściwości Items.push z type jako NOT_MODIFIED, REPOSITORY_ERROR lub REQUEUE powoduje brak rezerwacji ankietowanych wpisów. Więcej informacji o zarezerwowanych i niezarezerwowanych wpisach znajdziesz w sekcji Items.poll.

Items.push z haszami

Interfejs Google Cloud Search API obsługuje określanie wartości skrótu metadanych i wartości skrótu treści w żądaniach Items.index. Zamiast podawać type metadane lub wartości skrótu treści, można użyć żądania push. Kolejka indeksowania Cloud Search porównuje podane wartości skrótu z wartościami zapisanymi dla elementu w źródle danych. Jeśli są one niezgodne, ten wpis jest oznaczony jako MODIFIED. Jeśli w indeksie nie ma odpowiedniego elementu, jego stan to NEW_ITEM.

Items.poll

Metoda Items.poll pobiera z kolejki wpisy o najwyższym priorytecie. Żądane i zwrócone wartości stanu wskazują stan żądanych kolejek priorytetów lub stan zwróconych identyfikatorów.

Domyślnie mogą być zwracane wpisy z dowolnej sekcji kolejki w zależności od ich priorytetu. Każdy zwrócony wpis jest zarezerwowany i nie jest zwracany przez inne wywołania Items.poll, dopóki nie zostanie spełniony jeden z tych przypadków:

  • Upłynął limit czasu rezerwacji.
  • Wpis został ponownie dodany do kolejki przez użytkownika Items.index.
  • Funkcja Items.push jest wywoływana z wartością type równą NOT_MODIFIED, REPOSITORY_ERROR lub REQUEUE.