The following sections provide you with examples of using the different feature sets of Services_Yahoo. Currently this includes documentation for the interfaces to Yahoo! Search and Content Analysis.
All public methods in Services_Yahoo have in
common that exceptions
will be raised when something goes wrong. This is why try {
... } catch { }
blocks are wrapped around all examples.
The examples are designed to be run from a command line shell. If you would like to test them in a web browser you should replace
\n
with<br />
for better readability.
The following examples will communicate with Yahoo! Search.
Web search: Listing results
This snippet issues a search query for the term Steve
Fossett
to Yahoo! Search. For each result in the returned
result set the title is printed.
<?php
require_once "Services/Yahoo/Search.php";
try {
$client = Services_Yahoo_Search::factory("web");
$results = $client->searchFor("Steve Fossett");
echo "Number of results: " . $results->getTotalResultsReturned() . "\n\n";
foreach ($results as $result) {
echo $result['Title'] . "\n";
}
} catch (Services_Yahoo_Exception $e) {
echo "Error: " . $e->getMessage() . "\n";
foreach ($e->getErrors() as $error) {
echo "* " . $error . "\n";
}
}
?>
By default 10 results are returned per request. This number can be modified using the method setResultNumber():
<?php
require_once "Services/Yahoo/Search.php";
try {
$client = Services_Yahoo_Search::factory("web");
// Get 20 results per query
$results = $client->withResults(20)->searchFor("Steve Fossett");
/* ... */
?>
Web search: Result details
This code again queries Yahoo! Search for Steve
Fossett
, but this time the details of the first result in
the result set are printed.
<?php
require_once "Services/Yahoo/Search.php";
try {
$client = Services_Yahoo_Search::factory("web");
$results = $client->searchFor("Steve Fossett");
if ($results->getTotalResultsReturned() > 0) {
$info = $results->current();
echo "Title: " . $info['Title'] . "\n";
echo "Summary: " . $info['Summary'] . "\n";
echo "URL: " . $info['Url'] . "\n";
echo "clickable URL: " . $info['ClickUrl'] . "\n";
echo "Modification date: " . $info['ModificationDate'] . "\n";
echo "Mime type: " . $info['MimeType'] . "\n";
}
} catch (Services_Yahoo_Exception $e) {
echo "Error: " . $e->getMessage() . "\n";
foreach ($e->getErrors() as $error) {
echo "* " . $error . "\n";
}
}
?>
Web search: Paginating results
In this example the "paginating" capabilities of Services_Yahoo are shown. Paginating means that the search results are split up into chunks of e.g. 20, which are displayed together with links to jump back and forth to other result chunks. Basically this mimicks the functionality from the bottom of official Yahoo Search Page.
TBD
In order to query the Image, News, Video or Local search, one only needs to replace the argument "web" in the call of the factory() method with one of "image", "news", "video", or "local".
The following examples will show you how to use the Content Analysis Services provided by Yahoo!.
Term Extraction Service
The Term Extraction service provides a list of significant words or phrases extracted from a larger content.
<?php
require_once "Services/Yahoo/ContentAnalysis.php";
try {
$search = Services_Yahoo_ContentAnalysis::factory("termExtraction");
$search->setContext("Italian sculptors and painters of the "
. "renaissance favored the Virgin Mary for inspiration.");
$search->setQuery("madonna");
$results = $search->submit();
foreach ($results as $result) {
echo $result . "\n";
}
} catch (Services_Yahoo_Exception $e) {
echo "Error: " . $e->getMessage() . "\n";
foreach ($e->getErrors() as $error) {
echo "* " . $error . "\n";
}
}
?>
It is possible to skip the call to setQuery(). The parameter set by this method is intended to help the engine with the extraction process, but it is not stricly required.
Spelling Suggestion Service
The Spelling Suggestion service provides a suggested spelling correction for a given term.
The following code queries Yahoo for a spelling suggestion for the
term "madnna". The service will return exactly one
result, but currently there is no way to avoid looping through the
$results
.
<?php
require_once "Services/Yahoo/ContentAnalysis.php";
try {
$search = Services_Yahoo_ContentAnalysis::factory("spellingSuggestion");
$search->setQuery("madnna");
$results = $search->submit();
foreach ($results as $result) {
echo $result . "\n";
}
} catch (Services_Yahoo_Exception $e) {
echo "Error: " . $e->getMessage() . "\n";
foreach ($e->getErrors() as $error) {
echo "* " . $error . "\n";
}
}
?>