Не удается подключиться к Sphinx (полнотекстовый поиск) из приложения Docker - PullRequest
0 голосов
/ 29 января 2020

Итак, у меня есть проект, работающий в docker контейнере, подобный этому:

$ docker-compose up -d nginx mysql redis workspace

Docker работает нормально (все контейнеры работают), и я сейчас пытаюсь интегрировать Sphinx Full Поиск текста в контейнере рабочей области. У меня есть файл /etc/sphinxsearch/sphinx.conf, подобный следующему:

source tablename
{
    type            = mysql
    sql_host        = mysql
    sql_user        = user
    sql_pass        = pass
    sql_db          = database_name
    sql_port        = 3306
    sql_query       = SELECT id, name FROM tablename
    sql_attr_uint   = id
}

index tablename
{
    source          = tablename
    path            = /var/lib/sphinxsearch/data/tablename
    min_prefix_len  = 2
    morphology      = stem_en
}

searchd
{
    listen              = 127.0.0.1:9312
    log                 = /var/log/sphinxsearch/searchd.log
    query_log           = /var/log/sphinxsearch/query.log
    query_log_format    = sphinxql
    pid_file            = /var/run/searchd.pid
}

, и я запустил индексатор следующим образом, что выглядит нормально:

root@1ec9add2d1dc:/etc/sphinxsearch# /usr/bin/indexer tablename
Sphinx 2.2.9-id64-release (rel22-r5006)
Copyright (c) 2001-2015, Andrew Aksyonoff
Copyright (c) 2008-2015, Sphinx Technologies Inc (http://sphinxsearch.com)
using config file '/etc/sphinxsearch/sphinx.conf'...
indexing index 'tablename'...
WARNING: index 'tablename': dict=keywords and prefixes and morphology enabled, forcing index_exact_words=1
WARNING: attribute 'id' not found - IGNORING
WARNING: Attribute count is 0: switching to none docinfo
collected 17 docs, 0.0 MB
sorted 0.0 Mhits, 100.0% done
total 17 docs, 171 bytes
total 0.322 sec, 529 bytes/sec, 52.68 docs/sec
total 3 reads, 0.000 sec, 0.3 kb/call avg, 0.0 msec/call avg
total 9 writes, 0.000 sec, 0.2 kb/call avg, 0.0 msec/call avg

и последующие вызовы / usr / bin / searchd -rotate также исправляют индексы. Я также запустил searchd в контейнере рабочей области:

root@1ec9add2d1dc:/etc/sphinxsearch# /usr/bin/searchd 
Sphinx 2.2.9-id64-release (rel22-r5006)
Copyright (c) 2001-2015, Andrew Aksyonoff
Copyright (c) 2008-2015, Sphinx Technologies Inc (http://sphinxsearch.com)
using config file '/etc/sphinxsearch/sphinx.conf'...
listening on 127.0.0.1:9312

Но я не могу подключиться к этому из приложения. Пример кода:

$query = 'keyword';
$sphinx = new SphinxClient();
$sphinx->setServer('127.0.0.1', 9312);
$sphinx->setMatchMode(SPH_MATCH_ALL);
$sphinx->addQuery($query, 'tablename');
$sphinx->setLimits(0, 10);
$result = $sphinx->runQueries();

Но $ result всегда ложно со следующей ошибкой:

SPHINX Query failed: connection to 127.0.0.1:9312 failed (errno=111, msg=Connection refused)
bool(false)

Я также пытался изменить .conf и setServer () для использования localhost , '127.0.0.1', 'mysql' (sql имя контейнера), но на самом деле ничего не соединяется с sphinx из кода приложения.

Вопрос: я что-то здесь упускаю? Какие другие шаги необходимы для подключения к sphinx и получения фактических данных индекса? Любая помощь очень ценится.


Запуск Docker Рабочий стол на Ma c OSX, контейнеры Ubuntu PHP 7.2, "gigablah / sphinx php": "^ 2.0.8", "laravel / framework": "^ 6.4.0",

...