2015-10-05 97 views
2

我想在三个简单的文本上使用雅虎内容分析。雅虎YQL文字大小限制

由于它的作品,但如果我增加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 

回答

0

我有同样的问题。这样长的字符串曾经工作过,所以在没有能够找到任何在线信息的情况下,为什么他们不再这样做,我假定他们已经做了一个改变,限制了公共请求的字符串长度。可能由oauth验证的请求的长度更长。

我没有找到极限的弦变化。这可能是因为你在之后正在清理文字,你正在计算字符数。例如,在对字符串进行清理之后,您将根据字符串中转换的空间数量增加长度。

+0

啊,不,我错了,我认为这只是偶然,我是看到了串并没有产生错误,它是如你所说,每串不同。也许这就是yahoo根据产生错误的字符串返回的数据量。在这种情况下,雅虎应用程序本身就是纯粹的破坏(显然,目前只有2人注意到了它) – user5449291