Как настроить парсинг с нескольких источников?

MSE

VIP
VIP
Прошёл марафон
Регистрация
2 Апр 2017
Сообщения
142
Реакции
4
Баллы
8
Откройте файл core/search.php, найдите:

PHP:
$this->results = $this->MSE -> searchTrack($this->query);
После вставьте:
PHP:
# Запуск дополнительного парсера, если первый ничего не нашел
if (!$this->results) $this->results = $this->MSE -> searchTrack($this->query, '', 'liw\App\Mail');
Где liw\App\Mail - название дополнительного парсера. Обратите внимание, что выражение liw\App\ перед названием парсера обязательно. В данном примере, скрипт сделает попытку найти трек в стандартном парсере (указанном в настройках). Если парсинг не даст результатов, запустится дополнительный. Кол-во дополнительных парсеров, не ограничено:

PHP:
# Запуск дополнительного парсера, если первый ничего не нашел
if (!$this->results) $this->results = $this->MSE -> searchTrack($this->query, '', 'liw\App\Mail');

# Запуск дополнительного парсера, если Mail ничего не нашел
if (!$this->results) $this->results = $this->MSE -> searchTrack($this->query, '', 'liw\App\Parser_3');

# Запуск дополнительного парсера, если Parser_3 ничего не нашел
if (!$this->results) $this->results = $this->MSE -> searchTrack($this->query, '', 'liw\App\Parser_4');
Решение подходит для версии 2.3 - 2.4

Если возникают проблемы, пишите в ЛС
 
Последнее редактирование модератором:

EnotKo

Приватовец
Приватовец
VIP
Прошёл марафон
Регистрация
30 Май 2017
Сообщения
83
Реакции
36
Баллы
18
Откройте файл core/search.php, найдите:

PHP:
$this->results = $this->MSE -> searchTrack($this->query);
После вставьте:
PHP:
# Запуск дополнительного парсера, если первый ничего не нашел
if (!$this->results) $this->results = $this->MSE -> searchTrack($this->query, '', 'liw\App\Mail');
Где liw\App\Mail - название дополнительного парсера. Обратите внимание, что выражение liw\App\ перед названием парсера обязательно. В данном примере, скрипт сделает попытку найти трек в стандартном парсере (указанном в настройках). Если парсинг не даст результатов, запустится дополнительный. Кол-во дополнительных парсеров, не ограничено:

PHP:
# Запуск дополнительного парсера, если первый ничего не нашел
if (!$this->results) $this->results = $this->MSE -> searchTrack($this->query, '', 'liw\App\Mail');

# Запуск дополнительного парсера, если Mail ничего не нашел
if (!$this->results) $this->results = $this->MSE -> searchTrack($this->query, '', 'liw\App\Parser_3');

# Запуск дополнительного парсера, если Parser_3 ничего не нашел
if (!$this->results) $this->results = $this->MSE -> searchTrack($this->query, '', 'liw\App\Parser_4');
Решение подходит для версии 2.3 - 2.4

Если возникают проблемы, пишите в ЛС
У меня есть предложение по доработке данной идеи. Вообще, супер штука. Спасибо за этот прием!

Идея следует из моего практического опыта работы с движком. Например, у меня стоит парсер mail. Я подключил парсер Zvook как дополнительный.
Представим, что есть определенный запрос, генерируется страница. Срабатывает парсер Mail, выдает нам не нулевой результат. Но в списке треков нет нужного трека, т.е. mail по НЧ нашел какие-то совпадения, но все не то. А на Zvook такое может быть (как у меня на практике было - mail выдает 3 трека, но нужного нет, зато такой трек выдает zvook, но так как стоит парсер mail на поиске, то я не даю релевантный ответ пользователю).
Поэтому было бы здорово сделать так (если такое возможно):
Должен срабатывать дополнительный парсинг в случае, если в получаемом списке треков нет полного вхождения. Желательно, чтобы список треков формировался сразу с обоих парсеров.

Это как идея. Если такое возможно, конечно. Думаю, что это улучшит движок.
@MSE @Seopirat
 

mops

VIP
VIP
Регистрация
23 Окт 2018
Сообщения
7
Реакции
1
Баллы
3
Как сюда прикрутить api.я.вс?
 

razzroman

VIP
VIP
Регистрация
10 Янв 2018
Сообщения
162
Реакции
42
Баллы
28
а на 2.4.1 прокатит тоже?
 
Сверху Снизу