Web検索のサンプル - Web AI

Web AI」は、クロノス・クラウンの柳井政和が開発しているJavaScirptのライブラリです。

「Web AI」には、検索をメソッド・チェーンで効率化させる機能があります。この機能を使えば、検索結果を元にして、次の検索を行うといった処理を手軽に書くことができます。

「Web AI」の検索は、「Google AJAX API」を使っています。検索オブジェクトは、「Google AJAX Search API」のサーチャー・オブジェクトになります。また、受け取る結果は、同APIの結果オブジェクトになります。

また、検索結果からのキーワード抽出や、文章抽出の機能もあります。

それでは以下、「Web AI」のWeb検索のサンプルを掲載します。


まずは、実例です。

検索キーワード:





検索1結果:


検索1キーワード:


検索2-1結果:


検索2-2結果:


抽出文章:





以下、ソースコードです。メソッド・チェーンで検索を行っているのが分かると思います。

「srch」メソッドの引数に使う連想配列の「page」「loop」「key」などは、数値や文字列を直接設定しても、関数を設定しても構いません。関数の場合は、呼び出されるごとに、関数の結果を引数と解釈して受け取ります。これらは、全て内部で自動的に処理されます。

	// Googleからスクリプトをロード
	google.load("search", "1");
	google.load("feeds",  "1");
	google.load("jquery", "1.4.3");

	// ロード中アニメ
	var loadAnmArr			// ロード中アニメ配列
	= [".(^o^).", "(^o^)..", "^o^)..(", "o^)..(^", "^)..(^o", ")..(^o^", "..(^o^)"];
	var loadAnmCnt = 0;		// ロード中アニメ・カウンター

	// Web AI
	var $WA  = crocro.webAi;		// 短縮表記
	var cWSrch   = new $WA.WebSrch();	// Web検索
	var cJpKw    = new $WA.JpKw();		// 日本語キーワード
	var cJpSntnc = new $WA.JpSntnc();	// 日本語文章

	/**
	 *	【初期化処理】
	 */
	cWSrch.ready(function(){
		prettyPrint();		// ソースの装飾(*説明装飾用)

		// 検索ごとにインターバルを置きたい場合は数値か関数を指定
		//cWSrch.intrvl = 1000;
		//cWSrch.intrvl = function(){return (Math.floor(Math.random() * 5) + 1) * 100;};

		cWSrch
		.brand("gglBrnd")	// Googleのブランド表示
		.init({
			type : "web",			// Web検索を初期化
			opt : function(obj) {	// 検索オブジェクトを受け取り、設定を変更
				obj.setResultSetSize(google.search.Search.LARGE_RESULTSET);	// 8件
			}
		})
		.init({
			type : "blg",			// ブログ検索を初期化
			opt : function(obj) {	// 検索オブジェクトを受け取り、設定を変更
				obj.setResultSetSize(google.search.Search.LARGE_RESULTSET);	// 8件
			}
		})
		.setEachCall(function(){
			// ステップごとに呼び出される処理を追加
			drwLoadAnm(true);	// ロードアニメ描画
		})
		.start();		// 実行開始
	});

	/**
	 *	@title	【テスト】
	 *	@description
	 *
	 *		テストを行う。
	 */
	function test() {
		// 変数の初期化
		var qStr = $("#q").val();	// 検索語
		var kwArr = [];		// キーワード配列

		// リセット
		cJpKw.reset();
		cJpSntnc.reset();

		// 検索語はキーワード対象外にする(「,」区切りで複数指定可能)
		cJpKw.avoidStr = qStr;

		// 検索のメソッド・チェーン処理
		cWSrch
		.reset()			// 命令格納のリセット
		.srch({
			type : "web",
			page : 4,		// 検索を行うページ数を指定(8件×4ページで32件分)
							// 指定がない場合は1ページ目だけ検索
							// 結果は、検索したページの結果を全て連結した状態で得られる
			key : qStr,		// 検索キーワード
			res : function(res, cursor) {
				var outStr = "";
				if (cursor) {
					outStr += "検索数 : " + cursor.estimatedResultCount + "\n\n";
				}
				if (! res || res.length <= 0) {
					// 結果なし
					cWSrch.cmndsBreak();	// チェーン処理終了
					drwLoadAnm(false);		// ロードアニメ描画
				} else {
					// 結果あり
					for (var i = 0; i < res.length; i ++) {
						// 出力文字列の作成
						var r = res[i];
						outStr += "[" + i + "]\n"
							+ r.titleNoFormatting + "\n"
							+ r.unescapedUrl + "\n"
							+ r.content + "\n\n";

						// キーワードの収集
						cJpKw.addSrc(r.titleNoFormatting);
						cJpKw.addSrc(r.content);
					}
				}
				$("#res1").val(outStr);
			}
		})
		.srch({
			init : function() {
				// 命令の初期化フェイズ

				// パラメータ付きで、キーワードを出力
				$("#res1Kw").val(cJpKw.getStrArr({prmAll: true}).join("\n"));

				// キーワードの取得
				kwArr = cJpKw.getStrArr();
			},
			type : "blg",
			loop : function() {	// 検索のループ回数。引数は数値でも関数でも構わない
				return (kwArr.length >= 2) ? 2 : kwArr.length;
			},
			key : function() {	// 引数が関数なら、ループ毎に実行される
				// キーワード
				return kwArr[cWSrch.loopCnt];
			},
			res : function(res) {
				if (! res || res.length <= 0) return;	// 結果なし

				var outStr = "";
				for (var i = 0; i < res.length; i ++) {
					var r = res[i];
					outStr += "[" + i + "]\n"
						+ r.titleNoFormatting + "\n"
						+ r.unescapedUrl + "\n"
						+ r.content + "\n\n";

					// 文章の収集
					cJpSntnc.addSntnc(r.content);
				}
				$("#res2_" + (cWSrch.loopCnt + 1)).val(outStr);
			}
		})
		.add(function() {
			// 抽出した文章を出力
			var outStr = cJpSntnc.getSntncArr({usePrfrd: false});	// 校正なしで文章取得
			$("#resSntnc").val(outStr.join("\n"));

			// 検索の終了
			drwLoadAnm(false);		// ロードアニメ描画
		})
		.start();		// 実行開始
	}

	/**
	 *	@title	【ロードアニメ描画】
	 *	@description
	 *
	 *		ロード中のアニメを描画する。
	 *
	 *	@param	loading		ロード中か否か
	 *	@return	なし
	 */
	function drwLoadAnm(loading) {
		var dwStr = ""
		if (loading) {
			dwStr = "Now Loading... " + loadAnmArr[loadAnmCnt ++ % loadAnmArr.length];
		}
		$("#loading").text(dwStr);
	}

Cronus Crown(クロノス・クラウン)のトップページに戻る
(c)2002-2024 Cronus Crown (c)1997-2024 Masakazu Yanai
ご意見・お問い合わせはサイト情報 弊社への連絡までお願いします
個人情報の取り扱い、利用者情報の外部送信について