Skip to content

Instantly share code, notes, and snippets.

@iZerus
Last active August 22, 2024 12:24
Show Gist options
  • Save iZerus/8f82bb1cc2b14a8b38a1b22e1f130386 to your computer and use it in GitHub Desktop.
Save iZerus/8f82bb1cc2b14a8b38a1b22e1f130386 to your computer and use it in GitHub Desktop.

Установка и настройка Manticore 3.5.5 на Ubuntu 20.04

Прежде надо подготовить 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('ключевое_слово')

Работа из PHP

Подключаемся через 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

Источники

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment