SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

japan.internet.com翻訳記事

Live Search API入門

Live Search APIの使い方

  • X ポスト
  • このエントリーをはてなブックマークに追加

検索のカスタマイズ

 検索の実行や結果の取得について、次のようなカスタマイズが可能です。

  1. フラグ
  2. 成人向けコンテンツの除外
  3. 画像検索
  4. スペル候補
  5. 検索結果のページ分けや結果件数の制限

フラグ

 検索オブジェクトにフラグを設定すると、検索クエリを細かくカスタマイズできます。表1は設定可能なフラグの一覧です。

表1
SearchFlags 説明
DisableHostCollapsing このSearchRequestに対して、同じトップレベルURLから3件以上の結果が返る場合でも、結果の省略を行いません。すべての結果を漏れなく取得したい場合にはこの値を使用します。
DisableSpellCorrectForSpecialWords クエリ演算子で使用される特別な単語をスペルチェック時に無視させる場合に使用します。
MarkQueryWords このSearchRequestに対して返される検索結果の中で、検索語をUTF-8文字のペアで囲みます。通常この機能は、検索語を強調表示する目的で使用します。
None このSearchRequestに対してフラグを適用しません。

 ここでは例として、MarkQueryWordsフラグをもう少し詳しく見てみましょう。MarkQueryWordsは、検索結果の中で検索語を強調表示したいときに使用します。次のコードは、この機能を使って検索語を太字で表示する例です。

SearchRequest sRequest = new SearchRequest();
sRequest.Flags = SearchFlags.MarkQueryWords;

 結果セットは図8のように変わります。

図8 MarkQueryWordsの使用例。検索結果の中で、検索語が太字で表示される
図8 MarkQueryWordsの使用例。検索結果の中で、検索語が太字で表示される

成人向けコンテンツの除外

 SafeSearchOptionsオブジェクトは、検索結果で返されるコンテンツに懸念がある場合に使用できる機能で、成人向けの画像やテキストを検索結果から除外できます。

 SafeSearchOptions.Moderateでは成人向けの画像を除外でき、SafeSearchOptions.Strictでは成人向けの画像とテキストの両方を除外できます。

SearchRequest sRequest = new SearchRequest();
sRequest.SafeSearch = SafeSearchOptions.Moderate;

画像検索

 画像のみを検索することも可能です。SourceRequestでSourceType.Imageを使用すると、フルサイズとサムネールの画像について、サイズ、高さ、幅、URIなどの情報が返ります。次のコードは、SourceとResultFieldsを使用して画像を取得する例です。

SourceRequest[] sr = new SourceRequest[1];
sr[0].Source = LiveSearch.SourceType.Image;
sr[0].ResultFields = 
    ResultFieldMask.Description | 
    ResultFieldMask.Image | 
    ResultFieldMask.Title;

 検索結果は図9のようになります。表2は使用可能なソースタイプの一覧です。

図9 画像検索の例
図9 画像検索の例
表2
SourceType 説明
Image フルサイズとサムネールの画像について、サイズ、高さ、幅、URIなどの情報を返します。
InlineAnswers 回答を結果として返します。InlineAnswersの種類には、Encarta、Finance、Weather、およびMovie ShowTimesがあります。このオプションは商的利用に限定されています。
News オンラインニュースサービスから結果を返します。
Phonebook オンラインの個人別電話帳および職業別電話帳の項目から結果を返します。
QueryLocation 入力内容に応じた地域検索で得た結果の場所を返します。たとえば、"coffee 98052"と検索した場合、Titleに"coffee"、Descriptionに"98052"が返り、郵便番号98052の中心位置の緯度と経度が返ります。この機能は米国市場でのみ使用できます。
Spelling スペル候補を返します。
Web Webページを返します。

スペル候補

 ユーザーが検索語のスペルを誤って入力することはよくあります。そこで、検索の実行前に、ユーザーが入力した検索語のスペルをチェックすると、システムのユーザビリティが向上します。次のコードは、SourceType.Spellingを使用して、検索語が正しく入力されたかどうかを調べる例です。

SearchRequest sRequest = new SearchRequest();
SourceRequest[] sr = new SourceRequest[1];
sr[0].Source = LiveSearch.SourceType.Spelling;
sr[0].ResultFields = ResultFieldMask.All;
sRequest.Query = "vertual earth";

検索結果のページ分けや結果件数の制限

 検索機能のユーザビリティを高めるには、取得する結果の総数を制限したり、検索結果をページ分けして表示するという方法も有効です。結果の総数は次のように取得できます。

SearchResponse resp = serv.Search(sRequest);
int total = resp.Responses[0].Total;

 検索で取得する結果件数を指定するには、Countプロパティを設定します。

SourceRequest[] sr = new SourceRequest[1];
sr[0].Count = 10;

 データをページ分けして表示する処理を実装するときには、どのページを表示するか(表示したいページの先頭のレコード番号)と、1ページに表示するレコード数がわかっていなくてはなりません。Live Search APIでは、Offsetというプロパティを使用して、結果として取得する先頭のレコード番号を指定できます。次のコードは、レコード番号5から5件の結果を取得する例です。

SourceRequest[] sr = new SourceRequest[1];
sr[0].Count = 5;
sr[0].Offset = 5;

 この記事では、基本的な検索機能だけを取り上げました。他にも、可能性は無限に広がっています。最後に、有益なヒントや詳細な情報が得られるサイトのリンクを紹介しておきます。

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
japan.internet.com翻訳記事連載記事一覧

もっと読む

この記事の著者

japan.internet.com(ジャパンインターネットコム)

japan.internet.com は、1999年9月にオープンした、日本初のネットビジネス専門ニュースサイト。月間2億以上のページビューを誇る米国 Jupitermedia Corporation (Nasdaq: JUPM) のニュースサイト internet.comEarthWeb.com からの最新記事を日本語に翻訳して掲載するとともに、日本独自のネットビジネス関連記事やレポートを配信。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

Bronwen Zande(Bronwen Zande)

オーストラリアのブリスベーンに本社を置くSoul Solutionsのディレクター。10年以上前からソフトウェア開発に携わり、主にMicrosoft Liveと.NET開発を専門とする。Windows Live ServicesのMVP。Windows Live技術に関するコミュニティサイトViaWindowsLive.comの運営チームの中核メンバでもある。Windows Live以外では、世界中のギークガールたちを結束させる活動も行っている。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/2973 2008/09/17 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング