2.3.5. Sphinx

Zapłata

Na hostingu wirtualnym usługa jest płatna codzienny z równowaga osobista, na hostingbiznesowy jest wliczona w cenę taryfy. W przypadku zamówienia hostingu współdzielonego saldo musi być wystarczające do dokonania płatności minimum 1 miesiąc korzystanie z usługi.

Sphinx (SQL Phrase Index) to system wyszukiwania pełnotekstowego z obsługą morfologii różnych języków. Pozwala szybko i elastycznie wyszukiwać informacje w bazie danych za pomocą dowolnego tekstu.

  1. Otwórz sekcję «Sphinx».
  2. W bloku «Podstawowe dane» Kliknij «Zamówić»:
  3. Poczekaj około 15 minut na aktywację usługi.
Możesz sprawdzić, czy Sphinx współpracuje z skrypt testowy.

Uwagi:

  • Automatyczny i podręcznik pliki konfiguracyjne nie są ze sobą synchronizowane. Jeśli skonfigurujesz Sphinxa za pomocą panelu sterowania i przełączysz się na ręczną edycję, to plik konfiguracyjny nie będzie zawierał zmian wprowadzonych przez panel sterowania i odwrotnie.
  • Aby poznać wersję Sfinksa, łączyć do hostingu przez SSH i uruchom polecenie /usr/local/sphinx/bin/searchd -v.
  • Szczegółowy opis działania Sphinxa oraz listę wszystkich jego parametrów znajdziesz w oficjalna dokumentacja (Językangielski).

Protokoły dostępu dla demona wyszukiwania Sphinx (searchd):

  • «Gniazdo MySQL-Sphinx» — Dostęp przez SphinxQL, rodzaj SQL podobnego do MySQL.
  • «Gniazdo Native-Sphinx» — Dostęp przez SphinxAPI, własne API Sphinxa.

Aby korzystać ze Sfinksa potrzebujesz:

  1. Dostosuj Sfinksa - przez panel sterowania lub edycja ręczna.
  1. W bloku «Podstawowe dane» wyłączyć «Ręczna edycja»:
  2. Dodaj źródło danych:
    1. W bloku «Baza danych» Kliknij «Połącz bazę danych»:
    2. Określ nazwę i dane do połączenia z bazą danych MySQL (możesz wybrać istniejąca baza danych a pola zostaną uzupełnione automatycznie) i kliknij «Zapisać»:
  3. Dodaj indeks:
    1. W bloku «Indeksy» Kliknij «Utwórz indeks»:
    2. Określ nazwę indeksu, wybierz bazę danych, określ zapytanie SQL, aby uzyskać dane do indeksowania (np. SELECT id, title, content FROM table — kolumny id, title i content ze stołu table) i naciśnij «Zapisać»:
      Obecność kolumny w zapytaniu SQL id jest warunkiem wstępnym Sfinksa. Jeśli jako identyfikator używana jest kolumna o innej nazwie, użyj aliasu: SELECT custom_id as id.

  4. Skonfiguruj indeks:
    • Pola indeksowe i atrybuty - lista pól i typów danych dla każdego z nich (przynajmniej jedno pole musi być typu Fulltext):
    • Częstotliwość indeksowania - harmonogram według którego ma być wykonywane indeksowanie. Jest konfigurowany w taki sam sposób jak czas rozpoczęcia w cron. Domyślnie jest uruchamiany co 15 minut dziennie.
    • Parametry morfologiczne i indeksujące:
      • Morfologia — nazwa biblioteki (np. stem_ru), które posłużą do wyszukiwania słowa o różnych formach wyrazu — na przykład na żądanie «pies» wyniki z wariantami zostaną zwrócone «psy», «pies», «psy» itp.
      • Opcje indeksowania — Usuń kod HTML (html_strip), przechowywanie oryginalnych słów (index_exact_words), automatyczne rozszerzenie zapytania (expand_keywords), minimalna długość słowa (min_word_len), wrostki (min_infix_len), przedrostki (min_prefix_len), ścieżka do słownika terminów specjalistycznych (wordforms), kodowanie tabeli i ignorowanie znaków.
  5. W bloku «Podstawowe dane» Kliknij «Zastosuj konfigurację» zaktualizować konfigurację na serwerze. Uwaga Przycisk «sphinx.conf» możesz wyświetlić zawartość wygenerowanego pliku konfiguracyjnego.
  1. W bloku «Podstawowe dane» włączyć «Ręczna edycja»:
  2. W bloku «Konfiguracja Sfinksa» określ źródła danych, parametry indeksowania i zapisz zmiany:
    • Źródło danych (Sekcja source) — konfiguracja źródła danych (skąd Sphinx ma pobierać dane) i jego nazwa (w przykładzie db_source):
      • Typ danych (type) — typ źródła danych (w przykładzie mysql).
      • Dane połączenia z bazą danych (sql_host, sql_port, sql_user, sql_pass, sql_db) — dane do połączenia z bazą danych MySQL, skąd będą pochodzić informacje do indeksowania.
      • Wniosek wstępny (sql_query_pre) - żądanie, które będzie przed głównym żądaniem odbioru danych z bazy (w przykładzie SET NAMES utf8 - ustawienie kodowania UTF-8).
      • Główne zapytanie (sql_query) - prośba o pobranie z bazy danych niezbędnych do indeksacji (w przykładzie select id, title, content from table — kolumny id, title i content ze stołu table).
      • Inne dyrektywy - pozwalają zdefiniować kolejność grupowania, filtrowania, sortowania (szczegółowe informacje znajdziesz w oficjalna dokumentacja).
    • Opcje indeksowania (Sekcja index) — konfiguracja indeksu (jak dokładnie Sphinx powinien pracować z danymi) i jego nazwa (w przykładzie test_index):
      • Źródło danych do indeksowania (source) - nazwa źródła danych, z którego będą pochodzić informacje do indeksowania (w przykładzie db_source - patrz wyżej).
      • Ścieżka, w której będą przechowywane dane indeksu (path) - bezwzględna ścieżka do pliku z indeksami (w przykładzie /home/example/.system/sphinx/test_index).
      • Ustawienia morfologii (morphology) — nazwa biblioteki (w przykładzie stem_ru), które posłużą do wyszukiwania słowa o różnych formach wyrazu — na przykład na żądanie «pies» wyniki z wariantami zostaną zwrócone «psy», «pies», «psy» itp.
      • Zapisywanie słów w indeksie w ich oryginalnej formie (index_exact_words) — w połączeniu z dyrektywą expand_keywords pozwala na zwrócenie bardziej trafnych wyników na żądanie (w przykładzie 1 — w zestawie).
      • Minimalna długość słowa do indeksowania (min_word_len) — używane domyślnie 1, ale słowa o tej długości zwykle nie niosą obciążenia semantycznego (w przykładzie 3).
      • Inne dyrektywy - pozwalają zdefiniować kolejność grupowania, filtrowania, sortowania (szczegółowe informacje znajdziesz w oficjalna dokumentacja).
    • Lematyzacja. Aby włączyć obsługę lematyzacji należy umieścić pliki niezbędnych słowników na koncie hostingowym oraz dodać sekcję do konfiguracji:
      common {
          lemmatizer_base = /home/example/path/to/sphinx/dicts/
      }
  3. Po zapisaniu konfiguracji:
    • Sphinx uruchomi się ponownie.
    • Jeśli w konfiguracji są sekcje index w bloku «Indeksy» dla każdego indeksu zostanie utworzone zadanie cron do jego aktualizacji raz na 15 minut i rozpocznie się tworzenie indeksów (może zająć trochę czasu):

      W bloku «Indeksy»:

      • Dane rozmiaru są buforowane przez 10 minut.
      • Po kliknięciu przycisku usuń sekcja zostanie usunięta z konfiguracji index ten indeks.

Uwaga!

Przed użyciem wtyczek do pracy ze Sphinxem dokładnie zapoznaj się z ich wymaganiami i kompatybilnością. Większość wtyczek nie była obsługiwana od dłuższego czasu i działa ze Sphinx w wersji 2.2 lub niższej, hosting korzysta z wersji 3.

Konfiguracja witryny do współpracy ze Sphinxem leży w kompetencjach programisty witryny lub zaangażowanych specjalistów zewnętrznych.

Zadanie sprowadza się do następujących kroków:

  1. Sprawdź zawartość bazy danych witryny i określ, które dane potrzebujesz szybkiego wyszukiwania.
  2. Skonfiguruj Sphinxa z wymaganymi parametrami: określ, z której bazy danych chcesz pobrać dane, które tabele i kolumny chcesz indeksować, ustaw reguły indeksowania.
  3. Dodaj do serwisu kod, który zamiast standardowego przeszukiwania bazy danych, będzie wyszukiwał dane w utworzonym indeksie Sphinx. Kod może również napisać programista nawłasnąrękę, lub gotowe wtyczki lub moduły wymienione na oficjalna strona internetowa.

Podłączenie witryny do Sphinxa odbywa się za pośrednictwem gniazda. Ścieżkę do gniazda można znaleźć na stronie zarządzania Sphinxem. Port należy określić w zależności od konfiguracji wtyczki; generalnie port można pominąć, określając go jako 0 lub 9312.

Dziennik można przeglądać na kilka sposobów:

  • Panel sterowania: W rozdziale «Sphinx» w bloku «Podstawowe dane» Kliknij «Log» — pojawi się okno, w którym w czasie rzeczywistym będą wyświetlane najnowsze wpisy w dzienniku.
  • Menedżer plików: W rozdziale «Sphinx» w bloku «Podstawowe dane» w kolejce «Log» Kliknij 🔍 - log otworzy się we wbudowanym edytorze menedżera plików.
  • Konsola: łączyć do hostingu przez SSH i uruchom wymagane polecenie:
    • Wyświetl pełny dziennik:
      cat ~/.system/sphinx/searchd.log
    • Monitorowanie logów w czasie rzeczywistym:
      tail -f ~/.system/sphinx/searchd.log

      Aby zakończyć, użyj kombinacji Ctrl+C.

Pliki dziennika searchd.log i query.log (dziennik błędów połączenia i log żądań) można bezboleśnie usunąć, jeśli nie potrzebujesz z nich informacji.
Zawartość