You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 5 Next »

Indexing and Searching Services

Since the 5.0  version of the dLibra system, it has been possible to divide the search service (Search Server) known from version 4.0 into two separate services, for searching (Search Server) and indexing (Index Server), which are independent from each other. In the default configuration of the dLibra server, both services operate within the framework of the same Java virtual machine and share the same catalog with a search index. Such a configuration corresponds to the configuration from version 4.0 (regardless of whether the search service is located together with other services of the dLibra server or if it is run on a separate machine). Apart from the default configuration, the dLibra system makes available two other options, which differ with respect to the physical distribution of the services.

Search Server and Index Server on the Same Machine

In that solution, the Search Server and Index Server services are located on the same physical machine but operate within the framework of separate Java virtual machines. In order to obtain such a configuration, the user has to take the following steps:

  • Copy the server directory (without the “logs” subdirectory) to the new location and, optionally, change the name of the directory so that it indiates that it refers to the Index Server service. Further in the text, we will – for clarity’s sake –  call the original directory of the server SE and the copied catalog with the Index Server – IS.
  • Delete the SE/conf/is subdirectory.
  • Otwieramy plik SE/conf/server.xml i w sekcji <service-list> usuwamy wpis dotyczący usługi Index Server.
  • W podkatalogu IS/conf usuwamy wszystkie podkatalogi oprócz is, mx, wrapper.
  • Otwieramy plik IS/conf/server.xml i w sekcji <service-list> usuwamy wszystkie wpisy oprócz tych dotyczących usługi Index Server i interfejsu JMX. Oprócz tego zmieniamy parametr serverPort na wartość inną niż odpowiedni parametr w pliku SE/conf/server.xml (np. jeśli w SE/conf/server.xml parametr serverPort ma wartość 10051 to w pliku IS/conf/server.xml parametr ten można ustawić na wartość 11051). Jeśli sekcja <systemServicesUrl> jest zakomentowana, należy komentarz usunąć i wprowadzić URL do usługi System Services (adres i port serwera odpowiadają pierwotnemu serwerowi).
  • In the database, in table SYS_SERVICES, modify the entry pertaining to the Index Server service, by changing the value of column SER_PORT to the value set in file IS/conf/server.xml in the previous step.
  • In the same table, add a new tuple corresponding to the JMX interface for the new Index Server. Here is an example for the Oracle database:

    insert into SYS_SERVICES
    (SER_ID, SER_TYPE, SER_DESCRIPTION,
     SER_VERSION, SER_CONNECTED, SER_PASSWORD,
     SER_HOST, SER_PORT)
    values
    (SYS_SERVICES_SER_ID_SEQ.NEXTVAL, 'mx', 'dLibra JMX Management Service',
     '5.0', 0, '@ME_PASSWD@',
     '@SERVER_HOSTNAME@', @SERVER_PORT@);
    

    Parameters @ME_PASSWD@, @SERVER_HOSTNAME@, and @SERVER_PORT@ should be changed in accordance with the values in file IS/conf/server.xml.

  • Copy the directory which contains search indexes (the path to that directory is saved in file SE/conf/lucene.properties, in key indexDirectory). Enter the path to the new index location in key indexDirectory of file IS/conf/lucene.properties. Do the same for the directory which contains the backup copies of search indexes, taking into account the fact that the path to that directory is saved at key indexBackupDirectory.
  • Start up the dLibra server from the SE directory, and then from the IS directory. After the first startup of such a service configuration, file services.dat will be created in the directories of both servers. It should be used for generating new licenses.

 

Search Server i Index Server na osobnych maszynach

Rozwiązanie to zakłada, że usługi Search Server i Index Server będą umieszczone na osobnych fizycznych maszynach, więc naturalnie będą działać w ramach oddzielnych maszyn wirtualnych Java. W celu uzyskania takiej konfiguracji należy wykonać następujące kroki:

  • Kopiujemy katalog serwera (bez podkatalogu logs) do nowej lokalizacji na osobnej maszynie i opcjonalnie zmieniamy nazwę katalogu w taki sposób, by wskazywała, że dotyczy usługi Index Server. Dalej na potrzebę przejrzystości opisu pierwotny katalog serwera nazywać będziemy SE natomiast skopiowany katalog z usługą Index Server nazywać będziemy IS.
  • Usuwamy podkatalog SE/conf/is.
  • Otwieramy plik SE/conf/server.xml i w sekcji <service-list> usuwamy wpis dotyczący usługi Index Server.
  • W podkatalogu IS/conf usuwamy wszystkie podkatalogi oprócz is, mx, wrapper.
  • Otwieramy plik IS/conf/server.xml i w sekcji <service-list> usuwamy wszystkie wpisy oprócz tych dotyczących usługi Index Server i interfejsu JMX. Oprócz tego zmieniamy parametr serverHost na wartość odpowiadającą adresowi IP maszyny, na której umieszczono Index Server, wartość parametru serverPort może pozostać bez zmian. Jeśli sekcja <systemServicesUrl> jest zakomentowana, należy komentarz usunąć i wprowadzić URL do usługi System Services (adres i port serwera odpowiadają pierwotnemu serwerowi).
  • W bazie danych modyfikujemy w tabeli SYS_SERVICES wpis dotyczący usługi Index Server zmieniając wartości kolumn SER_HOST i SER_PORT na takie, jakie ustawione zostały w pliku IS/conf/server.xml w poprzednim kroku.
  • W tej samej tabeli dopisujemy nową krotkę odpowiadającą interfejsowi JMX dla nowego Index Servera. Przykład dla bazy danych Oracle:

    insert into SYS_SERVICES
    (SER_ID, SER_TYPE, SER_DESCRIPTION,
     SER_VERSION, SER_CONNECTED, SER_PASSWORD,
     SER_HOST, SER_PORT)
    values
    (SYS_SERVICES_SER_ID_SEQ.NEXTVAL, 'mx', 'dLibra JMX Management Service',
     '5.0', 0, '@ME_PASSWD@',
     '@SERVER_HOSTNAME@', @SERVER_PORT@);
    

    Parametry @ME_PASSWD@, @SERVER_HOSTNAME@ i @SERVER_PORT@ należy zamienić zgodnie z wartościami umieszczonymi w pliku IS/conf/server.xml.

  • Kopiujemy katalog zawierający indeksy wyszukiwawcze (ścieżka do tego katalogu zapisana jest w pliku SE/conf/lucene.properties w kluczu indexDirectory) na maszynę z usługą Index Server. Ścieżkę do nowej lokalizacji indeksów wpisujemy do klucza indexDirectory pliku IS/conf/lucene.properties. Podobnie postępujemy z katalogiem zawierającym kopie zapasowe indeksów wyszukiwawczych, przy czym należy uwzględnić fakt, iż ścieżka do tego katalogu zapisana jest pod kluczem indexBackupDirectory.
  • Uruchamiamy serwer dLibra z katalogu SE, następnie z katalogu IS. Po pierwszym uruchomieniu takiej konfiguracji usług w katalogach obu serwerów powstanie plik services.dat, który należy wykorzystać do wygenerowania nowych licencji.

 

Konfiguracja synchronizacji indeksów wyszukiwawczych

Rozdzielenie usług indeksującej i wyszukującej powoduje, że działają one na niezależnych od siebie indeksach wyszukiwawczych. Konsekwencją tego jest fakt, iż indeks wykorzystywany do wyszukiwania nie zawsze jest aktualny i wymaga okresowego odświeżania. Serwer dLibry wyposażony jest w mechanizm synchronizacji indeksów pomiędzy usługami Index Server i Search Server. Synchronizacja uruchamiana jest zgodnie z ustawieniami zadania okresowego zdefiniowanego w pliku SE/conf/se/jobs.xml. Domyślny plan synchronizacji zakłada, że indeks treści (a także indeksy słownikowe *_spell) z racji swojego rozmiaru będzie synchronizowany oddzielnie od indeksów metadanych. Plan ten można dostosować do własnych potrzeb modyfikując wyrażenia CRON dla poszczególnych zadań. Możliwe jest również utworzenie dodatkowych zadań okresowych związanych z konkretnym typem indeksów.

 

Uwagi

  • Oba rozwiązania zakładają, że wydzielenie usługi Index Server odbywa się z konfiguracji umieszczonej na 1 maszynie. W zwiazku z tym usługa Search Server jest umieszczona razem z pozostałymi usługami, ale w miarę możliwości można ją wydzielić na osobną maszynę podobnie jak Index Server.
  • Z uwagi na to, iż synchronizacja indeksów wykorzystuje systemowy katalog tymczasowy należy zapewnić odpowiednią ilość wolnego miejsca na dysku. W czasie synchronizacji wykorzystywany jest mechanizm kopii zapasowych operujący na archiwach ZIP, należy więc tak dostosować ilość wolnego miejsca, aby było możliwe jednoczesne przechowywanie archiwum ZIP wszystkich indeksów oraz ich postaci niespakowanych równolegle z bieżącą wersją indeksów wyszukiwawczych.
  • No labels