Вопрос по yii\sphinx\Query не находится индекс

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
Аватара пользователя
mika_di
Сообщения: 218
Зарегистрирован: 2015.09.24, 11:57

Вопрос по yii\sphinx\Query не находится индекс

Сообщение mika_di »

Не совсем понимаю как вся эта штука работает но решил попробовать как в примере

Код: Выделить всё

 
 public function actionSearch()
    {   $q='Тема';
        $query_search  = new Query();
        $search_result = $query_search->from('items')->match($q)->all();
    }
Ответ Undefined index: Index
Но индекс точно есть. Может конечно индексы нужно хранить где-то в пределах приложения. Для теста я индекс положил в /home/indexis
Подскажите как сделать правильно, я со sphinx не работал
Последний раз редактировалось mika_di 2017.06.07, 16:07, всего редактировалось 1 раз.
Аватара пользователя
yiijeka
Сообщения: 3103
Зарегистрирован: 2012.01.28, 09:14
Откуда: Беларусь
Контактная информация:

Re: Вопрос по yii\sphinx\Query не находится индекс

Сообщение yiijeka »

Ответ Undefined index: Index ....
А дальше номер строки и код должен быть указан в этой ошибки. Или нам по руке вам погадать? )
Аватара пользователя
mika_di
Сообщения: 218
Зарегистрирован: 2015.09.24, 11:57

Re: Вопрос по yii\sphinx\Query не находится индекс

Сообщение mika_di »

in /var/www/dev.site.ru/www/vendor/yiisoft/yii2-sphinx/Schema.php at line 242
Аватара пользователя
mika_di
Сообщения: 218
Зарегистрирован: 2015.09.24, 11:57

Re: Вопрос по yii\sphinx\Query не находится индекс

Сообщение mika_di »

Вообще вот весь список ошибок
1. in /var/www/dev.site.ru/www/vendor/yiisoft/yii2-sphinx/Schema.php at line 242
2. in /var/www/dev.site.ru/www/vendor/yiisoft/yii2-sphinx/Schema.php at line 242 – yii\base\ErrorHandler::handleError(8, 'Undefined index: Index', '/var/www/dev.site.ru/www/vendo...', 242, ...)
3. in /var/www/dev.site.ru/www/vendor/yiisoft/yii2-sphinx/Schema.php at line 227 – yii\sphinx\Schema::initIndexesInfo()
4. in /var/www/dev.site.ru/www/vendor/yiisoft/yii2-sphinx/Schema.php at line 114 – yii\sphinx\Schema::getIndexTypes()
5. in /var/www/dev.site.ru/www/vendor/yiisoft/yii2-sphinx/Schema.php at line 90 – yii\sphinx\Schema::resolveIndexType(yii\sphinx\IndexSchema)
6. in /var/www/dev.site.ru/www/vendor/yiisoft/yii2-sphinx/Schema.php at line 152 – yii\sphinx\Schema::loadIndexSchema('items')
7. in /var/www/dev.site.ru/www/vendor/yiisoft/yii2-sphinx/Connection.php at line 89 – yii\sphinx\Schema::getIndexSchema('items', false)
8. in /var/www/dev.site.ru/www/vendor/yiisoft/yii2-sphinx/QueryBuilder.php at line 1278 – yii\sphinx\Connection::getIndexSchema('items')
9. in /var/www/dev.site.ru/www/vendor/yiisoft/yii2-sphinx/QueryBuilder.php at line 598 – yii\sphinx\QueryBuilder::getIndexSchemas(['items'])
10. in /var/www/dev.site.ru/www/vendor/yiisoft/yii2-sphinx/QueryBuilder.php at line 128 – yii\sphinx\QueryBuilder::buildWhere(['items'], null, [':qp0' => 'Тема'], 'Тема')
11. in /var/www/dev.site.ru/www/vendor/yiisoft/yii2-sphinx/Query.php at line 180 – yii\sphinx\QueryBuilder::build(yii\sphinx\Query)
12. in /var/www/dev.site.ru/www/vendor/yiisoft/yii2/db/Query.php at line 213 – yii\sphinx\Query::createCommand(null)
13. in /var/www/dev.site.ru/www/controllers/ItemsController.php at line 86 – yii\db\Query::all()
14. app\controllers\ItemsController::actionSearch()
15. in /var/www/dev.site.ru/www/vendor/yiisoft/yii2/base/InlineAction.php at line 57 – call_user_func_array([app\controllers\ItemsController, 'actionSearch'], [])
16. in /var/www/dev.site.ru/www/vendor/yiisoft/yii2/base/Controller.php at line 156 – yii\base\InlineAction::runWithParams([])
17. in /var/www/dev.site.ru/www/vendor/yiisoft/yii2/base/Module.php at line 523 – yii\base\Controller::runAction('search', [])
18. in /var/www/dev.site.ru/www/vendor/yiisoft/yii2/web/Application.php at line 102 – yii\base\Module::runAction('items/search', [])
19. in /var/www/dev.site.ru/www/vendor/yiisoft/yii2/base/Application.php at line 380 – yii\web\Application::handleRequest(yii\web\Request)
20. in /var/www/dev.site.ru/www/web/index.php at line 12 – yii\base\Application::run()
Аватара пользователя
mika_di
Сообщения: 218
Зарегистрирован: 2015.09.24, 11:57

Re: Вопрос по yii\sphinx\Query не находится индекс

Сообщение mika_di »

Я прост не знаю, что именно писать в

Код: Выделить всё

$query_search->from
В коде вроде говорится о имени таблицы я указал таблицу, так же называется индекс. но что-то все равно ошибка
v-lukoyanov
Сообщения: 3
Зарегистрирован: 2017.11.07, 14:52

Re: Вопрос по yii\sphinx\Query не находится индекс

Сообщение v-lukoyanov »

нашли решение?
Аватара пользователя
Dominus
Сообщения: 892
Зарегистрирован: 2013.03.14, 21:27
Откуда: Россия, Иваново
Контактная информация:

Re: Вопрос по yii\sphinx\Query не находится индекс

Сообщение Dominus »

mika_di писал(а): 2017.06.07, 16:13 Я прост не знаю, что именно писать в

Код: Выделить всё

$query_search->from
В коде вроде говорится о имени таблицы я указал таблицу, так же называется индекс. но что-то все равно ошибка
Если конфигурация отсюда viewtopic.php?f=19&t=43850
то itemssec, то есть название индекса.
Не спорь с дураком, иначе окружающие не правильно поймут кто из вас дурак!
Аватара пользователя
Dominus
Сообщения: 892
Зарегистрирован: 2013.03.14, 21:27
Откуда: Россия, Иваново
Контактная информация:

Re: Вопрос по yii\sphinx\Query не находится индекс

Сообщение Dominus »

Моя конфигурация sphinx:
sphinx.conf

Код: Выделить всё

source dominus77
{
    type = mysql
    sql_host = 127.0.0.1
    sql_port = 3306
    sql_db = dominus77
    sql_user = root
    sql_pass = 
    sql_query_pre = SET NAMES utf8   
}
searchd
{
    listen      = 9306:mysql41
    pid_file    = e:/OpenServer/domains/yii2/dominus77.loc/public_html/frontend/runtime/sphinx/searchd.pid
    log         = e:/OpenServer/domains/yii2/dominus77.loc/public_html/frontend/runtime/sphinx/log/log.txt
    query_log   = e:/OpenServer/domains/yii2/dominus77.loc/public_html/frontend/runtime/sphinx/log/query_log.txt
    binlog_path = e:/OpenServer/domains/yii2/dominus77.loc/public_html/frontend/runtime/sphinx/binlog/
}

############# Blog #################
source blog_post : dominus77
{    
    sql_query = SELECT id, title, anons, content, author_id, created_at, updated_at, status FROM tbl_blog_post

    #sql_attr_string = title # Если включить то title не участвует в поиске
    sql_attr_uint = author_id
    sql_attr_timestamp = created_at
    sql_attr_timestamp = updated_at
    sql_attr_string = status
}
index idx_blog_post
{
    path = e:/OpenServer/domains/yii2/dominus77.loc/public_html/frontend/runtime/sphinx/index/idx_blog_post
    source = blog_post
    morphology = stem_ru, stem_en
    min_word_len = 2
}
############# End Blog ################
Controller:

Код: Выделить всё

use yii\sphinx\Query;
//...
public function actionSearch($q)
    {
        if ($q) {
            $model = new BlogPost();           
            $query_search = new Query();
            $search_result = $query_search->from('idx_blog_post')->match($q)->all();
            $dataProvider = $model->getPublishedBlogPostsSearch($search_result);
            return $this->render('index', [
                'listDataProvider' => $dataProvider,               
            ]);
        } else {
            return $this->redirect(['index']);
        }
    }
Вроде работает норм)
Не спорь с дураком, иначе окружающие не правильно поймут кто из вас дурак!
Аватара пользователя
mika_di
Сообщения: 218
Зарегистрирован: 2015.09.24, 11:57

Re: Вопрос по yii\sphinx\Query не находится индекс

Сообщение mika_di »

Спасибо. Я правильно понимаю, sphinx возвращает айдишники постов, а уже по этим айдишникам выполняется нормальный запрос в базе?
Аватара пользователя
Dominus
Сообщения: 892
Зарегистрирован: 2013.03.14, 21:27
Откуда: Россия, Иваново
Контактная информация:

Re: Вопрос по yii\sphinx\Query не находится индекс

Сообщение Dominus »

mika_di писал(а): 2017.11.15, 14:17 Спасибо. Я правильно понимаю, sphinx возвращает айдишники постов, а уже по этим айдишникам выполняется нормальный запрос в базе?

Код: Выделить всё

public function getPublishedBlogPostsSearch($result, $limit = 15, $sort = SORT_DESC, $status = self::STATUS_PUBLISH)
    {
        $ids = ArrayHelper::getColumn($result, 'id');
        $query = BlogPost::find()
            ->where(['id' => $ids])
            ->andWhere(['status' => $status])
            ->orderBy(['created_at' => $sort]);

        $dataProvider = new ActiveDataProvider([
            'query' => $query,
            'pagination' => [
                'pageSize' => $limit,
            ],
        ]);
        return $dataProvider;
    }
Не спорь с дураком, иначе окружающие не правильно поймут кто из вас дурак!
Ответить