Страница 1 из 1

Yii2 snippets with match mode

Добавлено: 2015.12.05, 18:38
Ellumilel
Помогите разобраться,
Есть запрос к Sphinx, в ответе получаем массив со строками и Snippets, с выделенными словами в теге <b>%s</b>:

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

$data = $query->from('test')
                    ->snippetCallback(
                        function ($rows) {
                            $result = [];
                            foreach ($rows as $row) {
                                $text = SearchText::find()->where(['id' => $row['id']])->one();
                                $result[] = $text->full_text;
                            }

                            return $result;
                        }
                    )
                    ->snippetOptions(['before_match' => '<b>', 'after_match' => '</b>'])
                    ->match($query_string])
                    ->all();
Тот же запрос но с использованием Expression, не подсвечивает слова в блоке Snippets:

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

$data = $query->from('test')
                    ->snippetCallback(
                        function ($rows) {
                            $result = [];
                            foreach ($rows as $row) {
                                $text = SearchText::find()->where(['id' => $row['id']])->one();
                                $result[] = $text->full_text;
                            }

                            return $result;
                        }
                    )
                    ->snippetOptions(['before_match' => '<b>', 'after_match' => '</b>'])
                    ->match(new Expression(':match', ['match' => '@(full_text) ' . $query_string]))
                    ->all();
 
Сталкивался ли кто-нибудь с такой проблемой? Если нет, подскажите, как можно обойти или как сделать запросы к Sphinx с использованием Expression и получить Snippets

Re: Yii2 snippets with match mode

Добавлено: 2016.05.30, 12:18
goodini
Так же столкнулся с этой проблемой. Не подставляет параметр qp2 в CALL SNIPPETS. Подскажите как решить

Re: Yii2 snippets with match mode

Добавлено: 2016.05.30, 13:18
goodini
в yii\sphinx\QueryBuilder

$params[$matchParamName] = $match; (411 строка

заменить на

if ($match instanceof Expression) {
$params[$matchParamName] = $match->params['match'];
} else {
$params[$matchParamName] = $match;
}

Re: Yii2 snippets with match mode

Добавлено: 2016.06.06, 21:21
samdark
Закинете на GitHub?

Re: Yii2 snippets with match mode

Добавлено: 2016.11.23, 13:34
Ellumilel
Проблема была решена:
https://github.com/yiisoft/yii2-sphinx/issues/61