例 – Services_Yahoo の使用例

この例について

以下の節では、Services_Yahoo のさまざまな機能を 使用する例を提供します。現在収録されているのは、 Yahoo! Search および Content Analysis へのインターフェイスのついてのドキュメントのみです。

Services_Yahoo のすべての public メソッドは、 何か問題が起こった場合には 例外 を発生させるようになっています。そのため、すべての例で try { ... } catch { } ブロックが使用されています。

この例は、シェルのコマンドラインから実行させるように設計されています。 Web ブラウザから試してみたい場合は、結果を読みやすくするために \n<br /> に置き換えましょう。

Yahoo! Search との会話

以下の例は、Yahoo! Search との通信を行います。

Web 検索: 結果の一覧表示

このコードは、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");

    
/* ... */
?>

Web 検索: 結果の詳細

このコードは、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";
    }
}
?>

Web 検索: 結果のページ移動

この例では、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";
    }
}
?>
Services_Yahoo の紹介 (Previous) Services_Yahoo の設計 (Next)
Last updated: Thu, 24 Apr 2014 — Download Documentation
Do you think that something on this page is wrong? Please file a bug report or add a note.
View this page in:

User Notes:

There are no user contributed notes for this page.