« ココログレスポンス問題・究極の選択……なのかなぁ? | トップページ | ちょっと宿酔気味... »

2006/06/24

【ココログ】「みんなで解決!広場」過去ログ検索用フォーム

@nifty

ココログの『みんなで解決!広場』で、ユーザからの質問にユーザが答えるという掲示板形式で運用されており、中には知っておくと有用なQ&Aなんかもたくさんありそう……なのですが。
しばらく前から、過去ログ検索が全く出来なくなってしまっているので、非常に不便です。

もっとも、設置されていた@search検索機能も実際には全然ひっかかってくれなくてほとんど役にたってなかった、という話もありますが……

よくあんな状態で放って置くものだ、と憤慨していてもはじまらないので、とりあえず正式な検索がリリースされるまでの繋ぎとして、検索機能を作ってみました。

検索フォームの設置の仕方は、適当な名前(『みんなで解決!広場検索』等)を付けたメモタイプのマイリストに、以下のHTMLを貼り付けて保存します。
最新の検索フォームは→こちら

<script type="text/javascript" charset="utf-8" src="http://furyu.tea-nifty.com/script/cocoQAsearch.js"></script>

<style type="text/css">
<!--
    .ccqas_notice {
        text-align:left; font-size: x-small;
    }
    .ccqas_links {
        text-align:left; font-size: x-small;
        line-height: 140%; margin-bottom: 8px;
    }
    .ccqas_ol {
        text-align: left;
    }
    .ccqas_li {
    }
    .ccqas_title {
    }
    .ccqas_user {
        color: brown;
    }
    .ccqas_date {
        padding-right: 8px;
    }
    .ccqas_body {
        padding-bottom: 8px;
    }
    .ccqas_update {
        text-align:right; font-size: smaller;
    }
    .ccqas_copyright {
        text-align:right; font-size: smaller;
    }
-->
</style>

<form name="ccqas_form" class="ccqas_form" action="javascript:cocoQAsearch.requestForm();">
  <input type="text" name="search_box" class="search_box" value="" />
  <input type="button" name="search_button" class="search_button" onclick="javascript:cocoQAsearch.requestForm(this.form);" value="検索" /><br />
  <div class="check_box"><input type="checkbox" name="debut" checked />はじめる前</div>
  <div class="check_box"><input type="checkbox" name="beginner" checked />初級者向け</div>
  <div class="check_box"><input type="checkbox" name="expert" checked />上級者向け</div>
  <div class="check_box"><input type="checkbox" name="info" />ブログ紹介</div>
</form>

技術的には、

  1. 自前のLinux PC上で「みんなで解決!広場」の過去ログを読み込んで、JavaScript形式に整形して保存
  2. 上記の検索フォームで検索ボタンが押されると、<script>タグを利用して 1. で保存しておいた整形済のデータが読み込まれ、読込み完了と共にコールバック関数が呼出される
  3. 読み込んだデータ中の指定された文字列を検索し、該当記事へのリンクを表示
ということをやってます。
検索時にデータを読み込むため、初回は時間がかかります。
なお、3. の検索&表示に関しては、『暴想』のなおゆきさん作“blog_ajax_json_search.js”の技術を使わせていただいております。

で、ほぼ出来上がった段階で、あずスタのads(あず)さんという方が既に同様の検索機能を実装されていることに気がついてしまいました……orz。
まぁ、違う点として、

  1. 一応、数時間毎にデータを自動更新するように設定してみた
  2. はじめる前/初級者向け/上級者向け/ブログ紹介を選択して検索できるようにしてみた
  3. 表示データに投稿された日時と投稿者名を表示するようにしてみた
というのがあるのですが。
特に1.は有利な点ではあるのですが、整形処理にバグが潜んでいる場合、更新後に一切検索出来なくなる可能性があったりします(ヲイヲイ。
また、自前サーバは非力だし、ルータも時々止まるので、気がついたら更新が止まっている……ということも充分あり得ますので、ご理解とご了解の上でお使い下さい。

※『続き』部分に更新履歴を記載しています。


【2006.07.21】

【2006.07.13】

【2006.07.01】

【2006.06.29】

【2006.06.28】

【2006.06.27】

【2006.06.26】

【2006.06.25】

【2006.06.24】

  • 上部に各検索結果へのリンクとヒット数表示を追加。
  • 検索結果表示の際にページトップにスクロールするように修正。

« ココログレスポンス問題・究極の選択……なのかなぁ? | トップページ | ちょっと宿酔気味... »

ウェブログ・ココログ関連」カテゴリの記事

おもいつき」カテゴリの記事

覚書」カテゴリの記事

コメント

【注意書き】 書き忘れてましたが、記事についたコメントは最新の10個のみが検索対象になります。 それ以前のものに関しては現状では対応できていませんのでご了承下さい。

→【2006.06.26】対応してみました。

サイトに検索窓がつけられたら...と思っていたので、とても嬉しい機能です。
便利なものをありがとうございます!

>もっとも、設置されていた@search検索機能も実際には全然ひっかかってくれなくてほとんど役にたってなかった、という話もありますが……

全く持って同感です。
漏れなく検索することが出来ない上に、ヒットする方が少ないというf(^^;)

はじめまして。
KOROPPYさまより辿ってお邪魔しました。
私は「みんなで解決!広場」はRSSリーダーでのみマークしているのでたまにしか見に行けません。その上いつの間にか溜まっていて使い勝手がよくなく、最近はみていませんでした。
こんな便利な検索窓が自分のサイドバーに設置できるなんてうれしいです。
これから挑戦ですが、まずはご挨拶までと思いまして、失礼しました。

風柳さん こんばんわ~
あはは~朝の書き込みとすれ違いで記事のアップされていたみたいですね。
早速設置させていただきましたm( _ _ )m
訪問者用というより、管理者自らが使う可能性の方が高いかもぉ~
でも大変なプログラムご苦労様でした&無償で公開される太っ腹に感謝感激!
やっぱ「ネットは性善説」を僕は信じてます~!

こんばんは。自動更新ってのがいいですね。Adsさんも喜ぶことでしょう。

ところで、広場にこの検索窓を仕込むGreasemonkeyをちょろっと作って試してみたんですけど、検索結果の文字化けが解消できず(T_T)
→ http://homepage3.nifty.com/facet/cocoQAsearch.user.js
# ページがShift_JISでJSONがeuc-jpでGreasemoenkeyは基本的にUTF-8で…ワケワカメ~(^^;

ということで、よかったらアドバイスいただければ_(._.)_
もしくは、検索窓から .content じゃなくて別窓とかに呼び出せるようになりませんかね?そうすればbookmarkletや検索プラグインとかでもできそうですし。
ま、「繋ぎ」なんで割に合わないかもしれませんが、簡単にできそうでしたら、ということで。

KOROPPYさん、どうもです。

| 漏れなく検索することが出来ない上に、ヒットする方が少ないというf(^^;)

こんな検索なら無い方がまし、と思ってましたが、無ければないでやっぱり不満がでてしまう、というのが悲しい性(^^;。

検索機能を含めて、もっと“使える”掲示板として進化して欲しいところですが……。
#ROMの私がいうのもなんですが(^^;(ROMって死語?)

ととろさん、はじめまして。
サイトを拝見しましたが、うまく設置できていたようですね(^^)。

余計なことかも知れませんが、タイトル(みんなで解決!広場検索)のところ、せっかくリンクになっているので、クリックしたら広場に飛ぶようにリンクをはってみたらいかがでしょうか。
#同様にBlog内検索はなおゆきさんのサイト(暴想)へ……

hibikiさん、どうもです。

| 訪問者用というより、管理者自らが使う可能性の方が高いかもぉ~

そうですね~。

そもそも『みんなで解決!広場』を知らない人には、なんだこれ?と思われてしまいそうかも……。
まぁ本来、広場の方に設置されているべきものですからねぇ。

……と思っていたら、facet さんが広場に埋めこむためのスクリプトを作られたみたいですね。
Greasemonkeyなので、Firefox専用……うーん、Sleipnir用も欲しいなぁ。

facet さん、どうもです。

| 検索結果の文字化けが解消できず

e.charset = "euc-jp";

e.charset = "utf-8";
にすればよいように思います。
こちらで試してみたら、一応OKみたいでした。
(Greasemonkey、実は使ったことがなくて、このために導入したり)

| 検索窓から .content じゃなくて別窓とかに呼び出せるようになりませんかね?

こちらの方は、時間が有れば、ということで(^^;。

ありゃま。それだけでしたか。寝ぼけてたみたいですね(^^;
Greasemonkeyもわざわざ導入していただいちゃってスミマセン。

あ、別窓云々より、データが最新10コメントまでという制限をなくすところを是非。
(とか相変わらず言いたい放題)

「ほぼ全文検索」を作成・公開した「あずスタ」管理人です。
ご紹介&ご連絡、ありがとうございました!

同じく仮設置の検索窓が使い物にならないことで、
「ニフティへの一提案」としてGW中に作成しました。
中でも苦労したのが、手作業によるデータファイルの作成でした。

このフォームの作成、お見事ですね!
私的にはデータファイルの自動更新の詳細を知りたいところですが、
よろしければ開示できるレベルで技術的なお話を伺いたいです。
勉強になりますのでね。今後も技術面で質問しても良いですか?

あくまで「リリースされるまでの繋ぎ」ということですが、
自blogにあれば多くのユーザが重宝するに違いありません。
そちらのサーバの負担にならなければ、継続を考えても良いのでは?
また、「広場」自体の改善も近いそうなのですが(確認しました)、
今後も小さな点からのユーザ運動にご協力いただけないでしょうか?
どうぞよろしくお願いします。

facetさん、どうもです。

| データが最新10コメントまでという制限をなくすところを是非。

トラックバック&コメントも入れておきましたように、挑戦してみました(笑)。

ちなみに、このトラックバックは送信に120秒以上かかりました……送信用フォーム作ってから新記録かも。重いってばさ>ココログ。
Proxyエラーもしっかり出るので(笑)、キャッシュシステムは付けたままだと思われるのですが、それでこれですか、ねぇ……。

ads(あず)さん、はじめまして。

『あずスタ』の方にはときどきお邪魔させていただいて、最近ではココログ交流会・議事録など、興味深く読ませていただいていたのですが、『「みんなで解決!広場」・よくある質問(FAQ)コーナー』の方に検索窓があるのは今回の作成時に初めて気がつきまして……失礼いたしました。

| 私的にはデータファイルの自動更新の詳細を知りたいところですが、

たまたま私の場合、自分のLinux PCがあったので、この上でcronの設定をして定期的に更新用のスクリプトを呼んでいる、というだけなんですよ(Windowsだとタスクスケジューラでコマンドスクリプトを定期実行するようなイメージですね)。

スクリプト自体は、bash+perlで。拙いソースで恥ずかしいのですが、参考までに上げておきます。
http://furyu.tea-nifty.com/script/cocolog-qa-serv-060626a.zip

検索データ作成の概要は、はじめる前/初心者向け/上級者向け/ブログ紹介毎に、

1. トップページを取得して、最新記事の番号を調べ、最新記事番号までのページ(記事)をまとめて取得(*1)。
2. ページ中でエラー情報のある(=存在しない)記事ファイルを削除後、Shift-JIS→EUC 変換(*2)。
3. コメントが10以上存在する記事を調べ、それ以前のコメント付き記事を取得&EUCに変換。
4. 全記事を読み込んで必要な要素を抜き出し、検索用データ(JavaScript形式)に変換。

(*1)ページの取得はLinuxのcurlコマンドで行っています。ちなみに、厳密にはこの方法だと最新記事番号が取得できない場合もあるのですが(取得のタイミングで、トップに表示されているのがコメントが付いた記事ばかりの場合)、うまい方法が思いつかないのでそのままです。
(*2)本当はEUCじゃなくてUTF-8がいいのでしょうけれど……うちのLinuxはまだEUC中心なのでメンテのしやすさと、後は若干のデータの軽さ(転送量軽減)を優先してます。

となります。
この辺りは、おそらくads(あず)さんの方も同様のことを行っておられるのでは?

記事とコメントが一体化しているページの構成上から、その都度全記事を取得する、という、環境に優しくない作りとなっております(苦笑)。その関係で、数時間毎のデータ更新としているわけですが。

まぁ、トップページのみ短期間で定期的に取得して、最近投稿された記事&コメントが付いた記事のみを更新するという方法も考えたのですが……面倒そうなので、止めました(^^;。
#正規表現とか苦手だし、技術的にあまり複雑なことは出来ないのです……

| 今後も技術面で質問しても良いですか?

こんなレベルでもよろしければ(^^;、どうぞ。

| そちらのサーバの負担にならなければ、継続を考えても良いのでは?

そうですねぇ。

検索データの作成にかかる負荷は少し気にはなりますが、今のところは大したことはないです。

それに、実は検索データの作成までは自前のLinux PC上ですが、出来上がった検索データそのものは@homepageの方に転送していたりします。なので、検索の際のサーバとしての負荷は@homepageの方で肩代わり(笑)。
後は、検索データ作成時のダウンロードでも@niftyのサーバの方に負荷がかかります。
でもこちらもココログと違って(^^;結構サクサクと取れるので、まだ気にしなくても大丈夫かなと。

それよりむしろ問題なのは、広場そのものに@niftyによる改善が加えられたときに、現状の掲示板の構成が大きく変わるだろう、というところでしょうね。
その際は、スクリプトをいちから作り直しなので……気力がわくかどうか(^^;。

| 今後も小さな点からのユーザ運動にご協力いただけないでしょうか?

どういった形でご協力出来るかはわかりませんが、私が出来る範囲で、ということで。

いささか長文となりましたが、今後とも宜しくお願いします。

>それよりむしろ問題なのは、広場そのものに@niftyによる改善が加えられたときに、現状の掲示板の構成が大きく変わるだろう、というところでしょうね。

ですね。今の広場、いつの時代のHTMLですか?ってなつくりですから、もしまたあんなHTMLならリニューアルに追随するのは面倒すぎますよ。私ならやらないな。(いや、そもそもできませんが)

…というか、リニューアル、検索窓が復活するだけだったりして(笑)。それなら、出来如何では継続してもいいかもですけど、それはそれでまた寂しいものが。(^^;

しかし、ココログ、遅いですよね。なんか、使うたびにやる気がどんどん失せていっちゃう。adsさんの交流会議事録によると倍速を目指すという話ですけど、やっぱり10倍速ぐらい達成してもらわないと困りますよね(交流会の前に、せめて10倍、できれば100倍、そんな話をadsさんにしたんです。トラバに120秒って…。やっぱり100倍と言いたくなっちゃいます)。

風柳さん、期待以上のレベルの解説に感謝します!
すごく丁寧で要望の漏れが無く、ソースまで公開していただけて・・・。
解説を読みましたが(ソースも頑張って読んでいます)、
おっしゃる通りでこちらも同様のことを行っています。
詳細を書いた記事を一応お伝えしておきますね。

『ココログ・「みんなで解決!広場」の「過去ログ全文検索」を公開』
http://adstv-web.cocolog-nifty.com/studio/2006/05/post_5c64.html

決定的な違いは「定期的なデータ更新」ですね(風柳さん作の方が上)。
「perlで処理してcronで自動更新」は予想できましたが、
データの抜き出しも上手くやれば自動処理化できるものなんですね。
そこをどう実現しているかが知りたかったんです。
facetさんによる「広場」に捏造する案(やろうと思えば自blogへも可能)は、
私作のものでも一応やれるでしょうけど、
今となっては風柳さん作のものの活用が一番ですね。
本当に有用なフォームです。素晴らしい!

なお、「広場」改善のご協力の件は、
別に私が偉そうな立場から言っているのではなく、
「今回みたいに少しでも気にしてもらえたらなあ、仲間になれたらなあ」
といった単なる希望なので、そのように受け止めてくださいね(笑)。
近々「広場」自体が改善されることは間違い無いのですが、
システムが大きく変更されることはまだ無いようなので、大丈夫かと。
それより、ココログ自体の問題解決の方が最優先ですよね。
facetさんのコメント通りで事前に強烈な意見をいただき(いや、貴重な意見です)、
交流会の際にも伝えたんですが、
「ユーザに速さを体感させなければ」といった回答を受けました。
将来のDB構成変更に向けて現在取り組んでいるかと思われますが、
早いうちに「軽くてしょうがない!」とうれしく呟いてみたいものです。

それでは、今後もどうぞよろしくお願いします!

facetさん、どうもです。

| 今の広場、いつの時代のHTMLですか?
あれって、ニフティの方のお手製なんですかね?新人研修で作らせた、とかだと笑えますが。さすがにそれはないでしょうけど(^^;。

|  リニューアル、検索窓が復活するだけだったりして
「Googleのクロール対象に再び入りましたので、@search検索機能を復活しました」って?(爆)
せめて、まじめに、真・全文検索であることを願います。

| トラバに120秒って…。やっぱり100倍と言いたくなっちゃいます
先程送信した分は35秒ほどでした。なんと一気に3.4倍程の高速化!
#をいをい

ads(あず)さん、どうもです。

ご紹介の記事を読みました。なる程~いろいろ工夫されていますね。
使い方ガイドでfacetさんの折り畳みスクリプトが使われていたのは知っていましたが、検索の方もJavaScriptでやっていたんですね(まぁ比較的軽いからいいけど、サービス提供側の機能なんだからサーバで処理して、とか思ったりして)。

ダウンロードソフト・エディタ・Excelと、いろいろ使って工夫されているのですね。IrvineとかでURI展開ダウンロードが出来るというのも初めて知ったり(笑)。知らないこと多すぎ……。
それにしても、引き出しは多いに越したことはないなぁ……いろんな組合せで出来ることが広がりますからね。

『検索ボタンを押した時点でファイル群をダウンロード……』という下り、Ajax は便利なんですけれど、同一ドメイン内のページしか取得できない、というのが痛し痒しというところ。同一ドメインに自分で設定可能なサーバがあればよいですが、ブログの場合は難しいですね。

| データの抜き出しも上手くやれば自動処理化できるものなんですね。

まぁ、苦肉の作ですが(苦笑)。RSSとかでインデックス配信されていれば楽なんですけどねぇ。
リニューアルではインデックスは付くでしょうか(RSSだけじゃなく。目次とかツリー表示があるだけでも、随分違うんですけれどね)。

| 「今回みたいに少しでも気にしてもらえたらなあ、仲間になれたらなあ」
| といった単なる希望なので、そのように受け止めてくださいね(笑)。

了解です(笑)。

#実は、とりあえず初心者向広場にでもこの検索を紹介しておこうか、とも思うのですが、安定性にいまいち自信が無かったり、すぐにリニューアルがなされるようなら無駄だし、と躊躇していたりします。


| ココログ自体の問題解決の方が最優先

(゚゚)(。。)ウンウン。
ほんっと~に、なんとかして欲しいです……出来れば、我慢して待っただけのことはある、と感心させて欲しいものですね。

コメントを書く

(ウェブ上には掲載しません)

トラックバック


この記事へのトラックバック一覧です: 【ココログ】「みんなで解決!広場」過去ログ検索用フォーム:

» サイドバーに「みんなで解決! 広場」内検索を設置 [ココログのよくある質問集]
「みんなで解決! 広場」の過去ログの検索窓を、右サイドバーに設置しました。 「はじめる前」「初心者向け」「上級者向け」「ブログ紹介」と、カテゴリを指定して検索できます。 ぜひご活用下さい。 設置方法や... [続きを読む]

» 「みんなで解決!広場」過去ログ検索窓を捏造する(笑) [facet-divers]
風柳亭の風柳さんが作られた "「みんなで解決!広場」過去ログ検索用フォーム" を流用しただけのものですが、一時的に使えなくなっている「みんなで解決!広場」の検索 [続きを読む]

« ココログレスポンス問題・究極の選択……なのかなぁ? | トップページ | ちょっと宿酔気味... »

戻るリンク追加

カレンダー

2019年9月
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30          

ココログカレンダーPlus

検索


    • Web全体 サイト内
    • 蔵書のISBNを入力して下さい
    • はじめる前
      初級者向け
      上級者向け
      ブログ紹介
      結果を表示

最近のトラックバック

コメントリストツリー化

無料ブログはココログ