例
例 –
Services_Yahoo の使用例
この例について
以下の節では、Services_Yahoo のさまざまな機能を
使用する例を提供します。現在収録されているのは、
Yahoo!
Search および Content
Analysis
へのインターフェイスのついてのドキュメントのみです。
Services_Yahoo のすべての public メソッドは、
何か問題が起こった場合には 例外
を発生させるようになっています。そのため、すべての例で try {
... } catch { } ブロックが使用されています。
この例は、シェルのコマンドラインから実行させるように設計されています。
Web ブラウザから試してみたい場合は、結果を読みやすくするために
\n を <br />
に置き換えましょう。
Yahoo! Search との会話
以下の例は、Yahoo! Search
との通信を行います。
このコードは、Yahoo! Search に対して Steve
Fossett という言葉を問い合わせる検索クエリを発行します。
返される結果のひとつひとつについて、その表題が出力されます。
<?php
require_once "Services/Yahoo/Search.php";
try {
$client = Services_Yahoo_Search::factory("web");
$results = $client->searchFor("Steve Fossett");
echo "結果の総数: " . $results->getTotalResultsReturned() . "\n\n";
foreach ($results as $result) {
echo $result['Title'] . "\n";
}
} catch (Services_Yahoo_Exception $e) {
echo "エラー: " . $e->getMessage() . "\n";
foreach ($e->getErrors() as $error) {
echo "* " . $error . "\n";
}
}
?>
デフォルトでは、一回のリクエストで 10 件ずつの結果が返されます。
setResultNumber() メソッドを使用することで、
この数を変更することが可能です。
<?php
require_once "Services/Yahoo/Search.php";
try {
$client = Services_Yahoo_Search::factory("web");
// 一度に 20 件ずつ結果を返します
$results = $client->withResults(20)->searchFor("Steve Fossett");
/* ... */
?>
このコードは、Yahoo! Search に対してもう一度 Steve
Fossett という言葉を問い合わせます。こんどは
最初に返される結果についての詳細が出力されます。
<?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 "表題: " . $info['Title'] . "\n";
echo "概要: " . $info['Summary'] . "\n";
echo "URL: " . $info['Url'] . "\n";
echo "クリッカブル URL: " . $info['ClickUrl'] . "\n";
echo "最終更新日: " . $info['ModificationDate'] . "\n";
echo "Mime 型: " . $info['MimeType'] . "\n";
}
} catch (Services_Yahoo_Exception $e) {
echo "エラー: " . $e->getMessage() . "\n";
foreach ($e->getErrors() as $error) {
echo "* " . $error . "\n";
}
}
?>
この例では、Services_Yahoo の「ページ移動」
機能についてご覧いただきます。ページ移動機能とは、検索結果の一部分
(たとえば 20 件) が画面に表示され、それ以外の部分へ移動するための
リンクが同時に表示されるような機能を意味します。簡単に言うと、
Yahoo の検索結果ページ の一番下の部分のようなものです。
TBD
画像・ニュース・動画 あるいはローカル検索を行いたい場合は、
factory() のコール時に渡した引数 "web"
を "image"・"news"・"video"
あるいは "local" のいずれかに置き換えればいいだけです。
Yahoo! Content Analysis サービスの使用
以下の例では、Yahoo! が提供する Content Analysis Services
を使用する方法を説明します。
Term Extraction Service (用語抽出サービス)
Term Extraction サービスは、大量の文書から有意な単語や熟語を抽出し、
その一覧を返します。
<?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 "エラー: " . $e->getMessage() . "\n";
foreach ($e->getErrors() as $error) {
echo "* " . $error . "\n";
}
}
?>
setQuery() のコールは省略することもできます。
このメソッドでパラメータを設定することにより、エンジンが抽出作業を
行うのを助けることができますが、これは必須というわけではありません。
Spelling Suggestion Service (スペル訂正サービス)
Spelling Suggestion サービスは、指定した用語についてのスペルの
修正候補を返します。
以下のコードは、"madnna" という用語について
スペルの修正候補を Yahoo に問い合わせます。実際のところ
このクエリは結果を 1 件だけしか返さないのですが、現時点では
$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";
}
}
?>