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).
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
lubcontentHash
. - 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.
- Podczas wypychania oprogramowanie sprzęgające jawnie zawiera kod push
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.Oprogramowanie sprzęgające pobiera te elementy z repozytorium i tworzy żądania do interfejsu API indeksu.
Oprogramowanie sprzęgające używa do indeksowania elementów
items.index
. Element przechodzi do stanuACCEPTED
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).
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” jakoNEW_ITEM
, ponieważ nie ma jej w kolejce). Każdy element ma przypisaną etykietę „A” do „kolejki A”. Treść jest indeksowana w Cloud Search.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.Oprogramowanie sprzęgające pobiera te elementy z repozytorium i tworzy żądania do interfejsu API indeksu.
Oprogramowanie sprzęgające używa do indeksowania elementów
items.index
. Element przechodzi do stanuACCEPTED
dopiero wtedy, gdy Cloud Search zakończy jego przetwarzanie.Metoda
deleteQueueItems
jest wywoływana w kolejce B. Jednak nie zostały przeniesione do kolejki B, więc nic nie da się usunąć.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
lubcontentHash
. - 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”.
- Podczas wypychania oprogramowanie sprzęgające jawnie zawiera kod push
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.Oprogramowanie sprzęgające pobiera te elementy z repozytorium i tworzy żądania do interfejsu API indeksu.
Oprogramowanie sprzęgające używa do indeksowania elementów
items.index
. Element przechodzi do stanuACCEPTED
dopiero wtedy, gdy Cloud Search zakończy jego przetwarzanie.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.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
lubREQUEUE
.