Pakiet Connector SDK i interfejs Cloud Search API umożliwiają tworzenie kolejek indeksowania Cloud Search, które służą do wykonywania tych zadań:
Zachowanie stanu dokumentu (stanu, wartości haszowania itp.), który może być używany do synchronizowania indeksu z repozytorium.
Utrzymywanie listy elementów do zindeksowania, które zostały odkryte podczas procesu przeszukiwania.
ustalać priorytety elementów w kolejkach na podstawie ich stanu;
Przechowywanie dodatkowych informacji o stanie w celu sprawnej integracji, takich jak punkty kontrolne, token zmiany itp.
Kolejka to etykieta przypisana do zindeksowanego elementu, np. „default” dla domyślnej kolejki lub „B” dla kolejki B.
Stan i priorytet
Priorytet dokumentu w kolejce zależy od jego kodu ItemStatus
. Oto możliwe kody ItemStatus
w kolejności według priorytetu (obsługiwane od pierwszego do ostatniego):
ERROR
– podczas procesu indeksowania element napotkał błąd asynchroniczny i wymaga ponownego zindeksowania.MODIFIED
– element, który był wcześniej indeksowany, ale 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 czasu ostatniego zindeksowania.
Gdy 2 elementy w kolejce mają ten sam stan, wyższy priorytet ma ten z nich, który znajduje się w kolejce najdłużej.
Omówienie korzystania z kolejek indeksowania do indeksowania nowego lub zmienionego elementu
Rysunek 1 przedstawia kroki 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 Operacje kolejki (pakiet SDK usługi Connectors).
Łącznik treści używa
items.push
do przekazywania elementów (metadanych i szyfrowania) do kolejki indeksowania w celu ustalenia stanu elementu (MODIFIED
,NEW_ITEM
,DELETED
). W tym celu:- Podczas przesyłania danych usługa łączy się z usługą docelową, aby przesłać dane.
type
contentHash
- Jeśli w oprogramowaniu sprzęgającym nie ma parametru
type
, Cloud Search automatycznie używa parametrucontentHash
do określania stanu elementu. - Jeśli produkt jest nieznany, jego stan ma wartość
NEW_ITEM
. - Jeśli produkt istnieje, a wartości skrótu do niego pasują, zostanie zachowany stan
ACCEPTED
. - Jeśli element istnieje, ale łańcuchy haszowe się różnią, stan zmienia się na
MODIFIED
.
Więcej informacji o tym, jak ustalany jest stan elementu, znajdziesz w przykładowym kodzie przeszukiwania repozytoriów GitHub w samouctniku na temat Cloud Search.
Zwykle przesyłanie danych jest powiązane z procesami przeszukiwania treści lub wykrywania zmian w łączniku.
- Podczas przesyłania danych usługa łączy się z usługą docelową, aby przesłać dane.
Połączenie treści używa interfejsu
items.poll
do odczytywania kolejki w celu określenia elementów do zindeksowania. Cloud Search informuje złącze, które elementy najbardziej potrzebują indeksowania. Są one posortowane najpierw według kodu stanu, a następnie według czasu oczekiwania w kolejce.Oprogramowanie sprzęgające pobiera te elementy z repozytorium i tworzy indeks żądań interfejsu API.
Oprogramowanie sprzęgające używa narzędzia
items.index
do indeksowania elementów. Element przechodzi w stanACCEPTED
dopiero po pomyślnym przetworzeniu go przez Cloud Search.
Oprogramowanie sprzęgające może też usunąć element, jeśli nie istnieje już w repozytorium, lub ponownie przesłać element, jeśli nie został zmodyfikowany lub wystąpił błąd w repozytorium źródłowym. Informacje o usuwaniu elementów znajdziesz w następnej sekcji.
Omówienie używania kolejek indeksowania do usuwania elementów
Strategia pełnego przemierzania wykorzystuje 2 kolejki do indeksowania elementów i wykrywania usunięć. Rysunek 2 przedstawia kroki usuwania elementu z wykorzystaniem 2 kolejek indeksowania. W szczególności na ilustracji 2 pokazano drugi przechodzenie z wykorzystaniem strategii pełnego przemierzania. Te czynności wykorzystują wywołania interfejsu API REST. Odpowiedniki wywołań pakietu SDK znajdziesz w artykule Operacje kolejki (pakiet SDK oprogramowania sprzęgającego).
Podczas początkowego przemierzania łącznik treści używa usługi
items.push
do przekazania elementów (metadanych i haszów) do kolejki indeksowania („kolejki A”) jakoNEW_ITEM
, ponieważ nie istnieje w kolejce. Każdemu elementowi przypisana jest etykieta „A” oznaczająca „kolejka A”. Treści są indeksowane w Cloud Search.Połączenie treści używa
items.poll
do odczytu kolejki A w celu określenia elementów do zindeksowania. Cloud Search informuje złącze, które elementy najbardziej potrzebują indeksowania. Są one posortowane najpierw według kodu stanu, a następnie według czasu oczekiwania w kolejce.Oprogramowanie sprzęgające pobiera te elementy z repozytorium i tworzy indeks żądań interfejsu API.
Łącznik używa do indeksowania elementów
items.index
. Element przechodzi w stanACCEPTED
dopiero po zakończeniu przetwarzania go przez Cloud Search.Metoda
deleteQueueItems
jest wywoływana w kolejce B. Żadne elementy nie zostały jednak przesłane do kolejki B, więc nie można niczego usunąć.Podczas drugiego pełnego przejścia łącze treści używa
items.push
do przesyłania elementów (metadanych i haszowania) do kolejki B:- Podczas przekazywania oprogramowanie sprzęgające udostępnia wprost funkcję push
type
lubcontentHash
. - Jeśli oprogramowanie sprzęgające nie zawiera interfejsu
type
, Cloud Search automatycznie określa stan elementu na podstawiecontentHash
. - Jeśli element jest nieznany, jego stan jest ustawiany na
NEW_ITEM
, a etykieta kolejki zmienia się na „B”. - Jeśli element istnieje i wartości skrótu są zgodne, stan pozostaje taki sam (
ACCEPTED
), a etykieta kolejki zmienia się na „B”. - Jeśli element istnieje, a szyfry różnią się, stan zmienia się na
MODIFIED
, a etykieta kolejki zmienia się na „B”.
- Podczas przekazywania oprogramowanie sprzęgające udostępnia wprost funkcję push
Połączenie treści używa interfejsu
items.poll
do odczytywania kolejki w celu określenia elementów do zindeksowania. Cloud Search informuje złącze, które elementy najbardziej potrzebują indeksowania. Są one posortowane najpierw według kodu stanu, a następnie według czasu oczekiwania w kolejce.Oprogramowanie sprzęgające pobiera te elementy z repozytorium i tworzy indeks żądań interfejsu API.
Łącznik używa do indeksowania elementów
items.index
. Element przechodzi w stanACCEPTED
dopiero po pomyślnym przetworzeniu go przez Cloud Search.Na koniec funkcja
deleteQueueItems
jest wywoływana w kolejce A w celu usunięcia wszystkich wcześniej zindeksowanych elementów CCloud Search, które nadal mają etykietę „A”.W przypadku kolejnych pełnych przejść kolejka używana do indeksowania i kolejka używana do usuwania są zamieniane.
Operacje kolejki (pakiet SDK łącznika)
Pakiet SDK Content Connector umożliwia przesyłanie elementów do kolejki i pobieranie ich z niej.
Aby spakować i przesłać element do kolejki, użyj klasy konstruktora pushItems
.
Nie musisz wykonywać żadnych specjalnych czynności, aby pobrać elementy z kolejki do przetwarzania. Zamiast tego pakiet SDK automatycznie pobiera elementy z kolejki (w kolejności według priorytetu) za pomocą metody klasy getDoc
Repozytorium.
Operacje kolejki (interfejs API REST)
Interfejs REST API udostępnia 2 metody przesyłania elementów do kolejki i wybierania elementów z niej:
- Aby dodać element do kolejki, kliknij
Items.push
. - Do ankietowania elementów w kolejce służy
Items.poll
.
Możesz też użyć polecenia Items.index
, aby dodać elementy do kolejki podczas indeksowania. Elementy dodane do kolejki podczas indeksowania nie wymagają stanu type
i automatycznie otrzymują stan ACCEPTED
.
Items.push
Metoda Items.push
dodaje identyfikatory do kolejki. Ta metoda może być wywoływana z określoną wartością type
, która określa wynik operacji push. Lista wartości type
jest dostępna w polu item.type
w metodzie Items.push.
Przekazanie 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
.
Gdy element jest pobierany, jest zarezerwowany, co oznacza, że nie może zostać zwrócony przez inny wywołanie funkcji Items.poll
.
Użycie funkcji Items.push
z type
zamiast NOT_MODIFIED
, REPOSITORY_ERROR
lub REQUEUE
powoduje odblokowanie odczytanych wpisów. Więcej informacji o zarezerwowanych i niezarezerwowanych wpisach znajdziesz w sekcji Items.poll.
Items.push
z haszami
Interfejs API Google Cloud Search umożliwia określenie wartości metadanych i wartości haszowanych treści w żądaniach Items.index
. Zamiast określać type
, metadane lub wartości skrótu treści można określić w żądaniu push. Kolejka indeksowania w Cloud Search porównuje podane wartości skrótu z wartościami zapisanymi dostępnymi dla elementu w źródle danych. Jeśli nie ma zgodności, wpis jest oznaczony jako MODIFIED
. Jeśli odpowiedni element nie istnieje w indeksie, jego stan to NEW_ITEM
.
Items.poll
Metoda Items.poll pobiera z kolejki wpisy o najwyższym priorytecie. Żądane i zwracane wartości stanu wskazują stan żądanych kolejek priorytetowych lub stan zwróconych identyfikatorów.
Domyślnie zwracane są wpisy z dowolnej sekcji kolejki, zgodnie z priorytetem. Każdy zwrócony wpis jest zarezerwowany i nie jest zwracany przez inne wywołania funkcji Items.poll
, dopóki nie wystąpi jeden z tych przypadków:
- Rezerwacja wygasa.
- Wpis jest ponownie dodawany do kolejki przez
Items.index
. Items.push
jest wywoływany z parametremtype
o wartościNOT_MODIFIED
,REPOSITORY_ERROR
lubREQUEUE
.