Zawody ze Sphinx-em. Instalacja i konfiguracja. (cz. 2)

W poprzedniej części "Zawody ze Sphinx-em. Co to jest? (cz. 1)" omówiliśmy podstawowe informację o silniku indeksującym Sphinx. Teraz pora pobrudzić sobie ręce. Więc zaczynamy!

Instalacja

UNIX

  1. Ściągamy plik instalacyjny ze strony http://sphinxsearch.com/downloads/
  2. Rozpakowujemy plik i wydajemy polecenia:
    ./configure
    make
    sudo make install
    

    Domyślnie program instaluje się z obsługą MySQL, ale jeśli chcemy np. zainstalować obsługę PostreSQL, musimy go skonfigurować z flagą --with-pgsql

WINDOWS

Jeśli instalujesz Sphinx-a na Windowsie, jedyne co musisz do ściągnąć instalator i zainstalować program.

Konfiguracja

Żeby zbudować choć podstawową wyszukiwarkę musimy mieć jakieś dane, więc musimy stworzyć tabelę i wypełnić ją rekordami.
CREATE TABLE tabela_panstwa (
`id` int(11) NOT NULL auto_increment,
`kod` varchar(2) COLLATE utf8_unicode_ci NOT NULL,
`kod3` varchar(3) COLLATE utf8_unicode_ci NOT NULL,
`nazwa` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
PRIMARY KEY (`kod`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; 

insert into table_panstwa (kod,kod3,nazwa) values ('AD','AND','Andora');
insert into table_panstwa (kod,kod3,nazwa) values ('AF','AFG','Afganistan');
insert into table_panstwa (kod,kod3,nazwa) values ('AG','ATG','Antigua i Barbuda');
insert into table_panstwa (kod,kod3,nazwa) values ('AI','AIA','Anguilla');
insert into table_panstwa (kod,kod3,nazwa) values ('AL','ALB','Albania');
insert into table_panstwa (kod,kod3,nazwa) values ('AM','ARM','Armenia');
insert into table_panstwa (kod,kod3,nazwa) values ('AN','ANT','Antyle Holenderskie');
insert into table_panstwa (kod,kod3,nazwa) values ('AO','AGO','Angola');
insert into table_panstwa (kod,kod3,nazwa) values ('AQ','ATA','Antarktyda');
insert into table_panstwa (kod,kod3,nazwa) values ('AR','ARG','Argentyna');
insert into table_panstwa (kod,kod3,nazwa) values ('AS','ASM','Samoa Amerykańskie');
insert into table_panstwa (kod,kod3,nazwa) values ('AT','AUT','Austria');
insert into table_panstwa (kod,kod3,nazwa) values ('AU','AUS','Australia');
insert into table_panstwa (kod,kod3,nazwa) values ('AW','ABW','Aruba');
Gdy ten etap mamy już za sobą, przejdźmy do konfiguracji naszego Sphinx-a, co tak naprawdę nie jest skomplikowane jeśli nie wymyślimy jakiś udziwnień.
source polaczenie_baza
{
    type = mysql
    sql_host = localhost # adres serwera
    sql_user = root # login
    sql_pass = root # haslo
    sql_db = katalog # baza danych
    sql_port = 3306
}

source idx_kraje : polaczenie_baza {
    sql_query = SELECT id, kod, kod3, nazwa FROM table_panstwa
    # zapytanie, które pobiera wyniki
    sql_query_info = SELECT id, nazwa FROM table_panstwa WHERE id=$id
    # zapytanie, które zwraca informacje o wybranych rekordach
}

# definiujemy indeks
index idx_kraje
{
    source = idx_kraje
    path    = /usr/local/sphinx/data/idx_kraje
    docinfo = extern
    charset_type = utf-8
    enable_star = 1
    html_strip = 1
    html_remove_elements    = style, script

    min_word_len = 2
    min_infix_len = 1

    charset_table = 0..9, A..Z->a..z, a..z, \
        U+0143->U+0144, \
        U+0104->U+0105, \
        U+0106->U+0107, \
        U+0118->U+0119, \
            U+0141->U+0142, \
        U+00D3->U+00F3, \
        U+015A->U+015B, \
        U+0179->U+017A, \
            U+017B->U+017C, \
        U+0105, U+0107, \
        U+0119, U+0142, \
        U+00F3, U+015B, \
        U+017A, U+017C, \
        U+0144
    # tutaj małe sztuczka potrzebna do indeksacji
    # polski znaków diakrytycznych
}

# ustawienia demona wyszukiwania
searchd
{
    port = 3312
    #log = /usr/local/sphinx/log/searchd.log
    #query_log = /usr/local/sphinx/log/query.log
    read_timeout = 5
    pid_file = /usr/local/sphinx/log/searchd.pid
    seamless_rotate = 1
    preopen_indexes = 0
    unlink_old = 1
}
Plikiem konfiguracyjnym programu jest plik sphinx.conf, powinien znajdować się z katalogu /usr/local/etc/sphinx.conf.
Jeśli mamy stworzony już plik konfiguracyjny trzeba stworzyć indeks:
/usr/local/sphinx/bin/indexer -all -c /usr/local/etc/sphinx.conf
następnie uruchamiamy demona:
/usr/local/bin/searchd -c /usr/local/etc/sphinx.conf
teraz możemy sprawdzić czy działa wyszukiwarka:
/usr/local/bin/search -c /usr/local/etc/sphinx.conf arg*

Podsumowanie

Mamy zainstalowanego i skonfigurowanego Sphinx-a, w następnej części przedstawię implementację API w PHP.

Skontaktuj się z nami

keyboard_arrow_up