匿名質問者

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


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

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

よろしくお願いします。

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2013/11/07 01:50:03

ベストアンサー

匿名回答1号 No.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から作るのに見合ったものになるのかどうか。

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

他1件のコメントを見る
匿名回答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は毎回文章をパースしてインデックス化しているので、ここをバイパスしてサーバ側に持たせるようにしないと厳しいかもしれませんね。ページ数などによるとは思いますが。

2013/11/02 18:30:36
匿名質問者

なるほど。
jekyll-lunr-js-searchというのは初めて知りました。
非常にためになるご解答ありがとうございました!
教えて頂いた情報を元に先方と検討してみます。

ありがとうございました!

2013/11/04 12:34:33

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません