Таблица есть, через запрос ее нет и прав к ней нет...

**root@y:~# sudo indexer --all --rotate**
Manticore 6.3.6 593045790@24080214 (columnar 2.3.0 88a01c3@24052206) (secondary 2.3.0 88a01c3@24052206) (knn 2.3.0 88a01c3@24052206)
Copyright (c) 2001-2016, Andrew Aksyonoff
Copyright (c) 2008-2016, Sphinx Technologies Inc (http://sphinxsearch.com)
Copyright (c) 2017-2024, Manticore Software LTD (https://manticoresearch.com)

using config file '/etc/manticoresearch/manticore.conf'...
indexing table 'indexnews'...
collected 248 docs, 0.0 MB
creating secondary index
creating lookup: 0.2 Kdocs, 100.0% done
sorted 0.0 Mhits, 100.0% done
total 248 docs, 23189 bytes
total 0.333 sec, 69441 bytes/sec, 742.65 docs/sec
total 3 reads, 0.000 sec, 15.1 kb/call avg, 0.0 msec/call avg
total 15 writes, 0.000 sec, 6.0 kb/call avg, 0.0 msec/call avg
rotating tables: successfully sent SIGHUP to searchd (pid=241459).

**root@y:~# mysql -h0 -P9306**
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 7
Server version: 6.3.6 593045790@24080214 (columnar 2.3.0 88a01c3@24052206) (secondary 2.3.0 88a01c3@24052206) (knn 2.3.0 88a01c3@24052206) git branch manticore-6.3.6...origin/manticore-6.3.6
Copyright (c) 2000, 2024, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>SELECT * FROM indexnews WHERE MATCH('sony')
         ->

Никакого результата, попробовал через php

$mnt = new PDO('mysql:host=127.0.0.1;port=9306');
$mnt->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $mnt->query("SELECT * FROM indexnews WHERE MATCH('sony')");
$results = $stmt->fetchAll();
print_r($results);

query.log

/* Thu Oct 24 03:52:11.586 2024 conn 8 (127.0.0.1:43516) real 0.000 wall 0.000 found 0 */ SELECT * FROM indexnews WHERE MATCH('sony'); /*error=unknown local table(s) 'indexnews' in search request */

/* Thu Oct 24 03:52:11.588 2024 conn 8 (127.0.0.1:43516) */ SELECT * FROM indexnews WHERE MATCH('sony')ny')assword # error=unknown local table(s) 'indexnews' in search request

Не находим таблицу и смущает это MATCH(‘sony’)ny’)

searchd.log

[Thu Oct 24 03:43:38.041 2024] [241460] WARNING: rotating table 'indexnews': .new preload failed: failed to open file '/var/lib/manticore/indexnews.spa': 'Permission denied'
[Thu Oct 24 03:43:38.043 2024] [241460] WARNING: table 'indexnews': rotating table 'indexnews': .new preload failed; ROLLBACK FAILED; TABLE UNUSABLE
[Thu Oct 24 03:43:38.043 2024] [241460] WARNING: table 'indexnews': prealloc: failed to open file '/var/lib/manticore/indexnews.spa': 'Permission denied' - NOT SERVING

Где я сделал что то не так?

**Fatal error** : Uncaught PDOException: SQLSTATE[42000]: Syntax error or access violation: 1064 unknown local table(s) 'indexnews' in search request in /var/www/zuldek/data/www/yo/index.php:71 Stack trace: #0 /var/www/zuldek/data/www/yo/index.php(71): PDO->query() #1 {main} thrown in **/var/www/zuldek/data/www/yo/index.php** on line **71**

Через php, pdo, тоже не находит созданную таблицу

Не надо было запускать indexer под рутом. В доке про это в самом верху секции про indexer написано предупреждение:

Поправьте права и запускайте indexer, как написано в доке.

1 Like

Увы, все тоже самое. Не находит индекс, я попробовал несколько вариантов

root@y:~# sudo systemctl stop manticore
root@y:~# sudo systemctl start manticore
root@y:~# sudo -u zuldek indexer --all
Manticore 6.3.6 593045790@24080214 (columnar 2.3.0 88a01c3@24052206) (secondary 2.3.0 88a01c3@24052206) (knn 2.3.0 88a01c3@24052206)
Copyright (c) 2001-2016, Andrew Aksyonoff
Copyright (c) 2008-2016, Sphinx Technologies Inc (http://sphinxsearch.com)
Copyright (c) 2017-2024, Manticore Software LTD (https://manticoresearch.com)
using config file '/etc/manticoresearch/manticore.conf'...
indexing table 'indexnews'...
FATAL: failed to open /var/lib/manticore/indexnews.spl: Permission denied, will not index. Try --rotate option.

Остановил manticore, почистил папку /var/lib/manticore. Увы, не вышло

root@y:~# su zuldek
zuldek@y:/root$ indexer --all
Manticore 6.3.6 593045790@24080214 (columnar 2.3.0 88a01c3@24052206) (secondary 2.3.0 88a01c3@24052206) (knn 2.3.0 88a01c3@24052206)
Copyright (c) 2001-2016, Andrew Aksyonoff
Copyright (c) 2008-2016, Sphinx Technologies Inc (http://sphinxsearch.com)
Copyright (c) 2017-2024, Manticore Software LTD (https://manticoresearch.com)
using config file '/etc/manticoresearch/manticore.conf'...
indexing table 'indexnews'...
FATAL: failed to open /var/lib/manticore/indexnews.spl: Permission denied, will not index. Try --rotate option.

Увы, попробовал от роот пользователя, прописать

root@y:~# sudo -u manticore  indexer --all
Manticore 6.3.6 593045790@24080214 (columnar 2.3.0 88a01c3@24052206) (secondary 2.3.0 88a01c3@24052206) (knn 2.3.0 88a01c3@24052206)
Copyright (c) 2001-2016, Andrew Aksyonoff
Copyright (c) 2008-2016, Sphinx Technologies Inc (http://sphinxsearch.com)
Copyright (c) 2017-2024, Manticore Software LTD (https://manticoresearch.com)

using config file '/etc/manticoresearch/manticore.conf'...
indexing table 'indexnews'...
collected 247 docs, 0.0 MB
creating secondary index
creating lookup: 0.2 Kdocs, 100.0% done
sorted 0.0 Mhits, 100.0% done
total 247 docs, 23127 bytes
total 0.259 sec, 89243 bytes/sec, 953.13 docs/sec
total 3 reads, 0.000 sec, 15.0 kb/call avg, 0.0 msec/call avg
total 15 writes, 0.000 sec, 6.0 kb/call avg, 0.0 msec/call avg
root@y:~#

Хорошо, в папке /var/lib/manticore, созданы файлы, владелец которых пользователь ‘manticore’

Пока все хорошо, но при попытке подключиться через PHP PDO. И выполнить запрос к индексу, по-прежнему не находит

**Fatal error** : Uncaught PDOException: SQLSTATE[42000]: Syntax error or access violation: 1064 unknown local table(s) 'indexnews' in search request in

Thu Oct 24 15:31:15.995 2024 conn 7 (127.0.0.1:44810) */ SELECT * FROM indexnews WHERE MATCH('sony')ny')assword # error=unknown local table(s) 'indexnews' in search request

Перезапустите searchd или сделайте reload tables

1 Like

Все получилось

В sql_query невозможно сделать запрос сразу в 3 таблицы и из php тоже нет возможности?

Получается, необходимо сделать в индекс запрос, собрать все id записей.
Далее через mysql выполнить запрос в 3 таблицы с выборкой id.

Далее полученный массив id, перебирать в цикле, сопоставляя данные из запроса mysql?

Чтобы отобразить все поля из 3 таблиц и применить сортировку мантикор.

Или есть лучший вариант?

В sql_query невозможно сделать запрос сразу в 3 таблицы

Можно. И через join можно, и через union. И три source’а можно сделать с разными sql_query к разным таблицам и потом все три указать в одном и том же index

и из php тоже нет возможности?

Не знаю, это же никак не касается мантикоры. В sql_query вы делаете запрос не к мантикоре, а к какой-то другой базе данных, например, к mysql.

1 Like

Работает, 3 таблицы. Только странно, дублирует поля, к примеру

[title] => Заголовок
[1] => Заголовок

То есть, в одном случаи, ключ именной и рядом тоже самое, только с числовым ключем. Возможно поправить, дабы память сэкономить…

дублирует поля

Что дублирует поля? Мантикора?

Не могу сказать конкретно, что именно, многое мне не известно. Но при запросе

$mnt = new PDO('mysql:host=127.0.0.1;port=9306', null, null, [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]);
$stmt = $mnt->query("SELECT * FROM indexnews WHERE MATCH('bhop')");
$results = $stmt->fetchAll();
print_r($results);

На выходе получаю

    [0] => Array
        (
            [id] => 5
            [0] => 5
            [title_prev] => bhop_arcane_v1
            [1] => bhop_arcane_v1
            [description] => 100-tk
            [2] => 100-tk
            [views] => 35
            [3] => 35
        )

И так по каждой записи с каждым полем, именной ключ + числовой. Не понимаю из-за чего такое может быть?

1 Like

Спасибо :grinning: