Я пытаюсь использовать Yahoo Content Analysis на трех простых текстах.
Как это работает, но если я увеличу длину строки в командах substr, я получу:
{"error":{"lang":"en-US","description":"Unknown error","status":"500"}}
Кто-нибудь может объяснить, почему это происходит? Согласно документации API должен принимать гораздо более крупные строки.
Также я не могу понять, почему лимит отличается на строку. Есть идеи?
Вот мой код
<?php
/**
* Function to use Yahoo to analyse some simple text
* @param String $text
* @param String $format
* @return String $content
*/
function yahoo_content_analysis($text, $format = 'json')
{
$url = "http://query.yahooapis.com/v1/public/yql";
$query = 'SELECT * FROM contentanalysis.analyze WHERE text = "' . $text . '"';
$characters = array(' ', '=', '"');
$replacements = array('%20', '%3D', '%22');
$query = str_replace($characters, $replacements, $query);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, "q=$query&format=$format");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_AUTOREFERER, true);
$response = curl_exec($ch);
$headers = curl_getinfo($ch);
curl_close($ch);
return $response;
}
// Text taken from wikipedia
$text1 = 'Computer programming (often shortened to programming or coding) is the process of designing, writing, testing, debugging, and maintaining the source code of computer programs.';
$text2 = 'For the thousands of refugees and migrants landing on its beaches every day Greece Lesbos island is a step to safety and a brighter future in Europe';
$text3 = 'Hurricane Gert was a large tropical cyclone that caused extensive flooding throughout Central America and Mexico in September 1993. It originated over the southwestern Caribbean Sea and briefly attained tropical storm strength before crossing Nicaragua, Honduras, and the Yucatán Peninsula.';
// {"error":{"lang":"en-US","description":"Unknown error","status":"500"}}
$text1 = substr($text1, 0, 120);
echo $text1 . PHP_EOL;
$response1 = yahoo_content_analysis($text1);
echo $response1 . PHP_EOL; // json
echo PHP_EOL;
$text2 = substr($text2, 0, 116);
echo $text2 . PHP_EOL;
$response2 = yahoo_content_analysis($text2);
echo $response2 . PHP_EOL; // json
echo PHP_EOL;
$text3 = substr($text3, 0, 124);
echo $text3 . PHP_EOL;
$response3 = yahoo_content_analysis($text3);
echo $response3 . PHP_EOL; // json
У меня та же проблема. Такие длинные строки работали, поэтому в отсутствие возможности найти какую-либо информацию в Интернете о том, почему они больше не работают, я предполагаю, что они внесли изменение, ограничивающее длину строки для открытых запросов. Возможно, длина запросов, аутентифицированных oauth, больше.
Я не нахожу предел варьируется в зависимости от строки. Это возможно потому что вы дезинфицируете текст после Вы считаете количество символов. После очистки строки вы увеличиваете длину, например, на основе количества пробелов в строке, которые конвертируются.
Других решений пока нет …