Задать вопрос
@KoRNeT46RuS

Как работать с Manticore Search на php?

Всем привет. Ребят не могу догнать, потому что, похоже, я хлебушек, что не так с мантикорой. Делаю все по манулу. Работаю через докер.

Настройки докера:
manticore:
    build: data/docker/manticore
    restart: always
    volumes:
      - ./data/docker-files/manticore/data:/var/lib/manticore/data
      - ./data/docker-files/manticore/logs:/var/log/manticore
      - ./data/docker/manticore/manticore.conf.dist:/etc/manticoresearch/manticore.conf
    ports:
      - 9306:9306
      - 9308:9308
      - 9312:9312
    depends_on:
      - mysql
    command: sh -c "sleep 10 && indexer --all --rotate && searchd --nodetach"


Настройки конфига мантикоры:
source main
{
    type          = mysql
    sql_db        = bd //конечно зареймлено
    sql_query_pre = SET CHARACTER_SET_RESULTS=utf8
    sql_query_pre = SET NAMES utf8
    sql_user      = tipa_user //конечно зареймлено
    sql_pass      = tipa pass //конечно зареймлено
    sql_port      = 3306
    sql_host      = mysql
}
searchd
{
    listen = 9312
    listen = 9306:mysql
    listen = 9308:http
    pid_file = /run/manticore/searchd.pid
}
source news : main
{
    sql_query = \
            SELECT \
                post_id, \
                title, \
                intro, \
                content \
            FROM \
                news\
            WHERE \
                object_type_id = 3

    sql_attr_uint = post_id
}
table news
{
    source = news
    path = /var/lib/manticore/data/news
    morphology           = stem_ru, stem_enru
    min_word_len         = 2
    expand_keywords      = 1
    html_strip           = 1
}


В data создаются индексовые файлы
6ab41cdb9bebb6f09ba2ad6c25fdbf3d.png

делаю подключение к клиенту:
use Manticoresearch\Client;

class ManticoreSearch
{
    private ?Client $_client = null;

    public function connect(): void
    {
        if ($this->_client === null || !empty($this->_client->getConnections())) {
            $this->_client = new Client([
                'host' => 'manticore',
                'port' => 9308,
            ]);
            var_dump($this->_client->table('news')->status());
        }
        exit;
    }
}


В итоге выводит, что такой таблицы нефига нет
"SHOW TABLE STATUS requires an existing table"

По сути индексация в записях есть. Записи нет. Может кто подсказать как работать с этим?
  • Вопрос задан
  • 144 просмотра
Подписаться 1 Простой 4 комментария
Помогут разобраться в теме Все курсы
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Stepik
    PHP (pro)
    2 недели
    Далее
Пригласить эксперта
Ответы на вопрос 1
opium
@opium
Просто люблю качественно работать
вот оно — на скрине файлы news.new.spa, news.new.spd и т.д. --rotate создаёт .new-файлы и сигналит запущенному searchd, чтобы тот подхватил. Но searchd в этот момент ещё не стартовал — файлы так .new и висят, а searchd при запуске ничего не видит.

Убери --rotate:
indexer --all && searchd --nodetach
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы