人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

CGI、PHPを利用しないサイト内検索の方法があれば教えてください。

客先のサーバーが特別仕様とのことで、外部からのアクセス不可、CGI、PHP設置不可の環境です。
その環境の中で、ウェブサイト内にサイト内検索を設置したいと言われました。
この場合、Google検索、Yahoo検索を利用する以外に方法は有りますでしょうか?
HTML関連データのみをそのまま納品して、先方にアップしてもらうという形になるので、非常に難しいとは思いますが。

別のサーバーを利用するというのは不可です。

よろしくお願いします。


●質問者: 匿名質問者
●カテゴリ:コンピュータ インターネット
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● 匿名回答1号
ベストアンサー

出来るかといえば出来なくはないが難しい・見合わない、という所?
2つ思いつきました。

1つは妥協案
検索エンジンでインデックスされた単語全てに対する結果を予め出力して静的ファイルにしておく。
http://www.namazu.org/doc/nmz.html.ja#w
http://www.namazu.org/doc/manual.html#namazu
この辺りで出来そう。

あとは検索ボックスでjavascriptかなにかで各単語毎のページにジャンプする。
これで1単語での検索は出来る。でもAND検索とかは出来ない。
例えば「検索エンジン」で検索する場合、「検索」「エンジン」の2語のAND検索になるので出来ないことになる。
なので、妥協案というか半分ごまかしかも知れません。

もちろんよく検索されるだろう2単語とかも静的ファイルにしておけば対応可能だろうけど、作るべきページ数がまさに指数関数的に増える。
アクセスログから検索ワードを拾って日々追加していくという手もあるかもしれない。でも本当に日々やらないと、たぶん使えない検索エンジンと思われて誰も使わなくなる。
あと、複数語対応にすると「検索エンジン」「検索 エンジン」「検索 エンジン」「エンジン 検索」とか同等の条件を正規化するようにしないといけないので、javascript部分が面倒になる。

等など、労多くして得るものは少ない気がします。


も一つはjavascriptとか使ってクライアントサイドでやっちゃう方法
インデックス作成は予めやっておいて、データを静的なJSONかXMLにしておく。
クライアントサイドで検索エンジン部を実装して、AJAXでインデックスを取得して(Web Storageにキャッシュとかもしつつ)対応する方法。
問題はインデックスファイルのサイズと、検索エンジンの実装。
インデックスファイルはどれくらい肥大化するものかわからないけれど、最悪ブラウザ拡張とかにすれば意外と行けるかもしれない。
問題は検索エンジンの実装ですね。とりあえず検索しても見当たらなかった。先のnamazuとか参考にするにしても、1から作るのに見合ったものになるのかどうか。

一応、出来るのは出来ると思うのですが、こちらも労多くして……という気がします。


匿名質問者さんのコメント
ありがとうございます! なるほど…。大変そうな上、新しいページをつくったらまたインデックスを手作りしなきゃ行けなかったりで、本当に労多そうです…。 素直にGoogle検索にするべきでしょうか…。

匿名回答1号さんのコメント
>> 素直にGoogle検索にするべきでしょうか…。 << それができるならそれが間違いないと思います。 クライアントサイドの検索エンジンですが、見つけるのは見つけました。 テキストファイルを元にWebサイト用htmlを作ってくれるjekyllと、全文検索エンジンのlunr.jsを組み合わせた jekyll-lunr-js-searchというやつです。 https://github.com/slashdotdash/jekyll-lunr-js-search 元はjelyllのプラグインとしてlunr.js用インデックスファイルというか検索対象の本文をのっけたJSONファイルを作って使うものですが、同じ構造のJSONを作れば流用は出来ると思います。 問題は日本語用のlunrのtokenizerです。日本語だと、やはり形態素解析の一部としてその手のライブラリが必要になりますが、やっぱりjavascriptのはなさそうです。 ただ、yahoo japanのサービス使えば一応出来そうではあります。 http://developer.yahoo.co.jp/webapi/jlp/ma/v1/parse.html 後はインデックスファイルというか全ページをテキスト化したファイルのサイズでしょうか。 lunrは毎回文章をパースしてインデックス化しているので、ここをバイパスしてサーバ側に持たせるようにしないと厳しいかもしれませんね。ページ数などによるとは思いますが。

匿名質問者さんのコメント
なるほど。 jekyll-lunr-js-searchというのは初めて知りました。 非常にためになるご解答ありがとうございました! 教えて頂いた情報を元に先方と検討してみます。 ありがとうございました!
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ