Простенький php класс для работы с API Яндекс Предиктор.
Если вы в своих проектах используете язык программирования PHP, тогда этот класс именно для Вас. С его помощью Ваш сервис сможет выводить текстовые подсказки в поисковой строке или другом текстовом поле. Это значительно упрощает ввод, особенно на мобильных устройствах. Кроме того, Предиктор может учитывать допущенные опечатки и ошибки.
Первое, что нужно сделать - это получить token по этой ссылке.
class YandexPredictor {
var $cfg = [
'key' ='Ваш токен', // API-ключ. Получите бесплатный API-ключ на https://yandex.ru/dev/predictor/keys/get/?service=pdct странице);
'q' => 'http://web-tool.info', // Текст
'lang' => 'ru', // Язык текста
'limit' => 3 // Количество возвращаемых подсказок
];
public function __construct($cfg) {
$this->cfg = array_merge($this->cfg, $cfg);
}
public function Request () {
return $this->Curl();
}
private function Curl() {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://predictor.yandex.net/api/v1/predict.json/complete?'.http_build_query($this->cfg));
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 2);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.103 YaBrowser/18.7.1.437 (beta) Yowser/2.5 Safari/537.36');
$this->request = curl_exec($ch);
curl_close($ch);
return $this->JsonDecode();
}
private function JsonDecode () {
$this->result = json_decode($this->request, true);
if (isset($this->result['code'])) {
$this->ServiceMessage();
}
return $this->result;
}
private function ServiceMessage() {
if ($this->result['code'] != 200) {
die($this->result['message']);
}
}
}
$YandexPredictor = new YandexPredictor([
'key' => 'pdct.1.1.20220701T181548Z.86cf791c6adc290a.162e9040d2fce163d7931ed189c81235d3a034b1',
'lang' => 'en',
'limit' => 1
]);
var_dump($YandexPredictor->Request());
Вывод:
$YandexPredictor = new YandexPredictor([ 'key' => 'Ваш токен', 'lang' => 'en', 'limit' => 1
-
На выходе получаем массив данных. Как с ним поступить, решать Вам:
- endOfWord - признак конца слова (true/false).
Метод может одновременно вернуть "продолжение" запроса и признак endOfWord= true (например, для текста "здравствуй" возвращается продолжение "здравствуйте", а также признак конца слова). - pos - позиция в слове, для которого возвращается продолжение. Позиция отсчитывается от последнего символа в запросе, переданном в элементе q.
Обычно, pos принимает отрицательные значения. Например, для текста q="кот в сапо" будет возвращено pos=-4. Если запрос содержит завершенную фразу, то может быть возвращена подсказка для следующего слова. При этом pos будет принимать значение 0 (например, при q="кот в ") или 1 (например, q="кот в"). - text - Содержит элементы string с наиболее вероятными вариантами продолжения заданного текста. Если метод не может "продолжить" текст, то элемент не возвращается.