OKWaveのWebサービス OkSearchAPIについて
Q&Aサイトを運営しているOKWaveがこれまでに蓄積された1100万件以上のQ&Aコンテンツを検索できるOkSearchAPIを公開しました。キーワードでの検索のほかに自然文検索もサポートも謳っています。
OkSearchAPIへのリクエスト方法
ドキュメントを見るとWeb APIの他にJavascript APIの2種が書かれています。ココではとりあえずWeb APIの方を見てみることにします。
http://search.okwave.jp/search?以下使用するパラメーター
↑のような形でリクエストします。検索リクエストはUTF8エンコードすること使用するパラメータは以下のものがあります。まずは必須パラメータです。
- mode : モード指定。searchにすること。
- word : 検索文字列(UTF8)
省略可のパラメータを次に書きます。()内がデフォルト値です。
- type : 検索タイプ。keyword : キーワード検索。 word : 自然文検索。(keyword)
- start : 検索結果取得開始位置。(0)
- items : 検索結果取得数。(20)
- booleam : 複数キーワード時の検索条件。and : AND検索。or : OR検索(and)
- sort : ソート条件。(score)
- order : 並び順。asc : 昇順。desc : 降順。(desc)
- before_date : 日付での絞り込み[yyyy-MM-dd] (以前全て)
- after_date : 日付での絞り込み[yyyy-MM-dd] (当日)
- ques_stat : 質問ステータス絞込み条件。all : 全ての質問。before : 受付中。after : 締め切済み。(all)
- ans_stat : 回答ステータスでの絞り込み。all : 全て。before : 回答無し。after : 回答あり。best : 良回答・次点あり (all)
- thank_stat : お礼ステータスでの絞り込み。all : 全て。before : お礼無し。after : お礼あり。(all)
- remak_stat : 補足ステータス日付での絞り込み。all : 全て。before : 補足無し。after : 補足あり。(all)
- c : カテゴリ絞込み。(all)
- target : 検索対象、複数指定可能。ques_title : タイトル。ques_text : 質問本文。answer : 回答本文。thank : お礼。remark : 補足。best_answer : 良回答。(デフォルト すべての項目)
- take : データ取得対象、複数指定可能。(デフォルト すべての項目)
ソートパラメータで使用できる値
ソートパラメータで利用できる設定値は以下の通りになります。
- score : スコア順
- date : 日時順
- answer_count : 回答数順
- remark_count : 補足数順
- thank_count : お礼数順
- pv : アクセス数順
- qst_instructive : 役に立った順
- instructive : 参考になった順
(注意) パラメーターでorder指定する場合なんですがsort=score指定した場合はorder=descになります。
データ取得対象を決める。
OkSearch APIからデータを取得する際の取得範囲を指定します。Amazon E-Commerce Service 4.0で言うところのResponseGroup指定となります。何も指定をしないと全ての項目を取得します。
- title : Q&Aタイトル。
- score : 検索スコア。
- url : Q&AのURL。
- id : Q&AのID。
- log_id : アクセスログID。
- source : コンテンツソース。
- summary : Q&Aの内容の一部。
- datetime : Q&Aの日時
リクエストの例
ドキュメントに載っているリクエストURLの作成例を載せてみます。
「ラーメン」というキーワードで検索し20件取得する場合
http://search.okwave.jp/search ?mode=search &type=keyword &word=%E3%83%A9%E3%83%BC%E3%83%A1%E3%83%B3
「Windowsが起動しません」という自然文で検索し30件取得する場合
http://search.okwave.jp/search ?mode=search &type=word &word=Windows%E3%81%8C%E8%B5%B7%E5%8B%95%E3%81%97%E3%81%BE%E3%81%9B%E3%82%93 &start= &items=30
「ありがとう」というキーワードで回答、良回答から検索し日付の新しい順にソートする場合
http://search.okwave.jp/search ?mode=search &type=keyword &word=%E3%81%82%E3%82%8A%E3%81%8C%E3%81%A8%E3%81%86 &target=answer &target=best_answer &sort=date &order=desc
「バレンタイン」というキーワードで2007-02-01から2007-02-28までの間で検索する場合
http://search.okwave.jp/search ?mode=search &type=keyword &word=%E3%83%90%E3%83%AC%E3%83%B3%E3%82%BF%E3%82%A4%E3%83%B3 &before_date=2007-02-01 &after_date=2007-02-28
XMLデータの構造
上記のリクエストURLでは以下のような感じでXMLデータが取得できます。分かりやすいように注釈等付け足してあります。
<?xml version="1.0" encoding="UTF-8"?>
<!-- hitcount:検索ヒット数 -->
<!-- resultcount:データ取得数 -->
<!-- startindex:データ取得開始位置 -->
<results hitcount="11336" resultcount="20" startindex="0">
<result>
<!-- アクセスログID-->
<parameter key="log_id">0</parameter>
<!-- Q&Aの内容の一部-->
<parameter key="summary">ラーメン構造の「ラーメン」は何から来たのでしょう?まさか食べるラーメンじゃありませんよね。
ついでに、ラーメン構造と、準ラーメン構造とは何がちがうのかも、教えていただけると有り難いです。</parameter>
<!-- Q&Aのタイトル -->
<parameter key="title">ラーメン構造ってのラーメンって何?</parameter>
<!-- Q&Aの日付 -->
<parameter key="datetime">2001-01-08 16:08:15</parameter>
<!-- 検索スコア -->
<parameter key="score">1.0</parameter>
<!-- Q&AのURL -->
<parameter key="url">http://okwave.jp/qa25683.html</parameter>
<!-- Q&AのID -->
<parameter key="question_id">25683</parameter>
<!-- コンテンツソース -->
<parameter key="source">okwave</parameter>
</result>
<result>
(以下略)
</result>
</results>
動作確認
とりあえずどんな感じで検索できるか試せるようにサンプルプログラムを作って設置してみました。OKSearch。xreaのサーバに設置しましたので上部に広告が表示されます。サンプルプログラムはもうちょっと弄ってみてから公開します。

コメント