Zend Framework

Zend_Service_Yahoo::webSearch 'site' option

Details

  • Type: Bug Bug
  • Status: Resolved Resolved
  • Priority: Major Major
  • Resolution: Fixed
  • Affects Version/s: 1.0.3
  • Fix Version/s: 1.9.5
  • Component/s: Zend_Service_Yahoo
  • Labels:
    None
  • Fix Version Priority:
    Should Have

Description

The 'site' option of Zend_Service_Yahoo::webSearch does not work. Whenever it is specified, nothing is returned.

For example, when searching for "mysql" on "www.php.net", many results are returned:

http://search.yahoo.com/search;_ylt=A0geu9VfanRHn3MApo1XNyoA?p=site%3Awww.php.net+mysql&y=Search&fr=sfp&ei=UTF-8

Similarly, calling the REST API directly returns results:

http://search.yahooapis.com/WebSearchService/V1/webSearch?appid=YAHOO_ID&query=mysql&results=10&site=www.php.net

However, doing the same with "Zend Framework 1.0.3", nothing is returned.

Using PEAR's Services_Yahoo_Search component, the results are returned correctly.

Sample Code:

// ----------------------------------------------------------------------

// Zend Framework 1.0.3

include_once 'Zend/Service/Yahoo.php';

$yahoo = new Zend_Service_Yahoo('YAHOO_ID');

$results = $yahoo->webSearch('mysql', array('site' => 'www.php.net'));

foreach ($results as $result)
{
    echo $result->Title . '<br />';
}

echo "<hr />";

// ----------------------------------------------------------------------

// PEAR

include_once 'Services/Yahoo/Search.php';

$yahoo = Services_Yahoo_Search::factory('web');
$yahoo->setAppId('YAHOO_ID');
$yahoo->setSites(array('www.php.net'));
$yahoo->setQuery('mysql');

$results = $yahoo->submit();

foreach ($results as $result)
{
	echo $result['Title'] . '<br />';
}

Activity

Hide
Simone Carletti added a comment -

I investigated the issue.
Here's a few notes:

This is the URI queried by Zend_Service_Yahoo
http://search.yahooapis.com/WebSearchService/V1/webSearch?type=all&start=1&language=en&license=any&results=10&format=any&site=www.php.net&appid=API_KEY&query=mysql

I tried to remove each default parameter and I discovered license parameter can cause some problem when site is not empty, even if any is the default value.
I would suggest to remove the default value and left the parameter empty.

Show
Simone Carletti added a comment - I investigated the issue. Here's a few notes: This is the URI queried by Zend_Service_Yahoo http://search.yahooapis.com/WebSearchService/V1/webSearch?type=all&start=1&language=en&license=any&results=10&format=any&site=www.php.net&appid=API_KEY&query=mysql I tried to remove each default parameter and I discovered license parameter can cause some problem when site is not empty, even if any is the default value. I would suggest to remove the default value and left the parameter empty.
Hide
Kevin Golding added a comment -

Interesting this query has the "any" license set but returns 511 results:

http://search.yahooapis.com/WebSearchService/V1/webSearch?type=all&start=1&language=en&license=any&results=10&format=any&site=www.flickr.com&appid=API_KEY&query=mysql

All that changed is the site searched against. It seems Yahoo aren't consistent in their handling of the matter.

Show
Kevin Golding added a comment - Interesting this query has the "any" license set but returns 511 results: http://search.yahooapis.com/WebSearchService/V1/webSearch?type=all&start=1&language=en&license=any&results=10&format=any&site=www.flickr.com&appid=API_KEY&query=mysql All that changed is the site searched against. It seems Yahoo aren't consistent in their handling of the matter.
Hide
Wil Sinclair added a comment -

This issue should have been fixed for the 1.5 release.

Show
Wil Sinclair added a comment - This issue should have been fixed for the 1.5 release.
Hide
Jonathan Maron added a comment -

It seems that in Zend Framework 1.5.1, the problem is still not solved.

The following code does not return any results:

// Zend Framework 1.5.1

include_once 'Zend/Service/Yahoo.php';

$yahoo = new Zend_Service_Yahoo('YAHOO_ID');

$results = $yahoo->webSearch('mysql', array('site' => 'www.php.net'));

foreach ($results as $result)
{
    echo $result->Title . '<br />';
}

echo "<hr />";

Removing the ", array('site' => 'www.php.net')" part of "webSearch" and executing again, returns results.

I personally think that Zend_Service_Yahoo::webSearch, with the 'site' option is a great way to implement a "site search" feature on anyway.

Show
Jonathan Maron added a comment - It seems that in Zend Framework 1.5.1, the problem is still not solved. The following code does not return any results:
// Zend Framework 1.5.1

include_once 'Zend/Service/Yahoo.php';

$yahoo = new Zend_Service_Yahoo('YAHOO_ID');

$results = $yahoo->webSearch('mysql', array('site' => 'www.php.net'));

foreach ($results as $result)
{
    echo $result->Title . '<br />';
}

echo "<hr />";
Removing the ", array('site' => 'www.php.net')" part of "webSearch" and executing again, returns results. I personally think that Zend_Service_Yahoo::webSearch, with the 'site' option is a great way to implement a "site search" feature on anyway.
Hide
Kevin Golding added a comment -

All the testing I've done suggests there's an inconsistency at Yahoo's end. I think "fixing" it in ZF will be more a case of adding workarounds and exceptions to wrangle the results when we hit bad resultsets like mysql on php.net.

Show
Kevin Golding added a comment - All the testing I've done suggests there's an inconsistency at Yahoo's end. I think "fixing" it in ZF will be more a case of adding workarounds and exceptions to wrangle the results when we hit bad resultsets like mysql on php.net.
Hide
Wil Sinclair added a comment -

This doesn't appear to have been fixed in 1.5.0. Please update if this is not correct.

Show
Wil Sinclair added a comment - This doesn't appear to have been fixed in 1.5.0. Please update if this is not correct.
Hide
Simone Carletti added a comment -

@ Jonathan Maron
AFAIK nothing has been done to fix the issue for ZF 1.5 thus it's normal the issue still appears.

If I have a few minutes in the next days I'll give it a look.
Needless to say, patches are always welcomed from everyone.

Show
Simone Carletti added a comment - @ Jonathan Maron AFAIK nothing has been done to fix the issue for ZF 1.5 thus it's normal the issue still appears. If I have a few minutes in the next days I'll give it a look. Needless to say, patches are always welcomed from everyone.
Hide
Wil Sinclair added a comment -

Simone, could you please look at this and fix the bug or close the issue? Time to get some closure.

Thanks!
,Wil

Show
Wil Sinclair added a comment - Simone, could you please look at this and fix the bug or close the issue? Time to get some closure. Thanks! ,Wil
Hide
Simone Carletti added a comment -

Hi Wil,
I'll try to give it a look.

Show
Simone Carletti added a comment - Hi Wil, I'll try to give it a look.
Hide
Milan Momcilovic added a comment -

Hi all,

The license parameter causes problems. I tested the Yahoo web search service from my browser using the following URI:

http://search.yahooapis.com/WebSearchService/V1/webSearch?appid=YAHOO_API_KEY&query=Godfather&results=2&license=any

IMO, this should return the results from IMDB but it returns only results from Digg, which the license option ('license=any') does not work correctly.

When license parameter is not used at all, the correct results are returned - try this:

http://search.yahooapis.com/WebSearchService/V1/webSearch?appid=YAHOO_API_KEY&query=Godfather&results=2

Therefore, I think that the "license" option should be removed from $defaultOptions for now, until Yahoo guys fix this problem.

Thanks,
Milan

Show
Milan Momcilovic added a comment - Hi all, The license parameter causes problems. I tested the Yahoo web search service from my browser using the following URI: http://search.yahooapis.com/WebSearchService/V1/webSearch?appid=YAHOO_API_KEY&query=Godfather&results=2&license=any IMO, this should return the results from IMDB but it returns only results from Digg, which the license option ('license=any') does not work correctly. When license parameter is not used at all, the correct results are returned - try this: http://search.yahooapis.com/WebSearchService/V1/webSearch?appid=YAHOO_API_KEY&query=Godfather&results=2 Therefore, I think that the "license" option should be removed from $defaultOptions for now, until Yahoo guys fix this problem. Thanks, Milan
Hide
Sergei Izvorean added a comment -

This is still an issue in ZF 1.8.0. However the problem seems to be with Yahoo as it doesn't return any results if "license" parameter is present in REST query string. Once the parameter is removed everything works fine. I've done couple test using just a browser and modifying the query string.

Just need an option not to include "license" parameter in Zend_Yahoo_Service. Currently it is validated and cannot be omitted.

Thanks, Sergei

Show
Sergei Izvorean added a comment - This is still an issue in ZF 1.8.0. However the problem seems to be with Yahoo as it doesn't return any results if "license" parameter is present in REST query string. Once the parameter is removed everything works fine. I've done couple test using just a browser and modifying the query string. Just need an option not to include "license" parameter in Zend_Yahoo_Service. Currently it is validated and cannot be omitted. Thanks, Sergei
Hide
michael depetrillo added a comment -

I've removed 'license' from the default option array. Site searches now work.

Show
michael depetrillo added a comment - I've removed 'license' from the default option array. Site searches now work.

People

Vote (2)
Watch (6)

Dates

  • Created:
    Updated:
    Resolved: