Прежде надо подготовить web-сервер.
Возможно, для работы потребуется установить еще либы:
sudo apt install default-libmysqlclient-dev
Можно установить dev версию, об это на офф сайте. Устанавливаем Manticore через команду
sudo apt-key adv --fetch-keys 'https://repo.manticoresearch.com/GPG-KEY-manticore'
sudo wget https://repo.manticoresearch.com/manticore-repo.noarch.deb
sudo dpkg -i manticore-repo.noarch.deb
sudo apt-get update
sudo apt-get install manticore
Настраиваем файл конфигурации (*.conf
) в папке: /etc/manticoresearch/
.
Берем данный пример
файла конфигурации:
source sourcename {
type = mysql
sql_host = localhost
sql_user = user
sql_pass = pass
sql_db = base
sql_query = SELECT id, head, body, url from pages
}
index indexname {
type = plain
source = sourcename
path = /var/lib/manticore/indexname
morphology = stem_enru
min_infix_len = 3
stored_fields = head, body
stored_only_fields = url
# wordforms = /etc/manticoresearch/wordforms/indexname.wfs
}
searchd
{
# listen = 127.0.0.1:9312
listen = 127.0.0.1:9306:mysql
# listen = 127.0.0.1:9308:http
log = /var/log/manticore/searchd.log
query_log = /var/log/manticore/query.log
pid_file = /var/run/manticore/searchd.pid
# data_dir = /var/lib/manticore/ # для plain index указывается в самом индексе
query_log_format = sphinxql
binlog_path = #
}
Пример файла wordforms.wfs:
~штиль > STIHL # ~ указывает на поддержку морфологии
После подготовки базы и конфига (*.conf
), отключаем на всякий случай все демоны поиска:
sudo service manticore stop
sudo searchd --stop
Далее выполняем индексацию базы:
sudo indexer имя_индекса (или --all)
Чтобы проиндексировать базу во время работы мантикора, надо добавить аргумент --rotate
:
sudo indexer имя_индекса (или --all) --rotate
*Справку по аргументам функции можно посмотреть, просто введя indexer
.
После создания индекса, запускаем поисковый демон с помощью команды:
sudo searchd
Справку по аргументам функции можно посмотреть, введя searchd --help
.
Добавляем к вышеописанной команде аргумент --stop
:
sudo searchd --stop
Чтобы проверить работу поиска, подключаемся к mysql
, указывая порт из файла конфигурации.conf
:
mysql -h0 -P порт (9306 обычно)
Пробуем ввести запрос, указывая заместо таблицы индекс
из конфига:
SELECT * FROM имя_индекса WHERE MATCH('ключевое_слово')
Подключаемся через PDO по указанному в конфиге.conf
порту.
Мануал по SphinxQL
: http://sphinxsearch.com/docs/manual-2.2.1.html#sphinxql-select
<?php
// Если вместо 127.0.0.1 написать localhost, то под линуксом PDO может приконнектиться к MySQL
$pdo = new PDO('mysql:host=127.0.0.1;port=порт');
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $pdo->query("SELECT * FROM имя_индекса WHERE MATCH('ключевое_слово')");
$results = $stmt->fetchAll();
print_r($results);
Репозиторий с библиотекой для работы с manticore
: https://github.com/iZerus/ManticoreSearchWeb