概要 ▶ 日本HPのMitakeSearch(フリー版)を会社の数年前のマシンに導入して色々試しています。流石にWEBのデータを取得してインデックスを作成するインデクサは非常に荷が重いようですが、マニュアルによればインデクサを他のサーバーで動かしても問題はないようです。MitakeSearch V4.2はスポンサーURL検索機能というものが付いて、簡単に言えばGoogle AdWords(≠Google A
本ページはプロモーションが含まれている場合があります
本ページはプロモーションが含まれている場合があります
MitakeSearch V4.2はスポンサーURL検索機能というものが付いて、簡単に言えばGoogle AdWords(≠Google AdSense)を真似できるという機能です。デフォルト(初期設定)のままだとどちらかといえば、gooやYahoo!のようなスポンサー表示しかできませんが、Perlのプログラムと格闘できる気力があれば、Google AdWordsそっくりも可能ではないでしょうか。
ただ、自分と勤めている会社にスポンサーはいないので、そのような使い方は今のところできません。
そこで他の使い方を考えてみました。
Googleになくて他の検索エンジンサイトにある機能といえば「公式サイト」の表示かしら。gooでいえば「ぴったりgoo」などがそれにあたります。Googleにも「I'm Feeling Lucky」がありますけど、行ってみてからのお楽しみといことで実用的ではない気がします。Googleの遊び心なんだろうけどね。とにかく「これを探しているんじゃないの?」というものをこちらから意図的に表示できれば利便性が上がること間違いないと思いました。(検索結果から「探す」のが労力が掛かるから)
設定としては、スポンサーURL検索の設定ファイル(任意のファイル名)に自社のアドレスを書き込んで、mk-sponsor.plをするだけです。スポンサーURL検索表示のタイトル部分も、「SPONSOR」ではなく「あなたがお探しのページはこちらですか?」というタイトルに変更しました。これで「スポンサーURL検索」ではなく「ぴったりMitake」の完成です。
が、ここで問題点が発生。
私の設定でインデキシングをプライベートアドレス「192.168.x.x」から行っています(外部に表示するときにURLの変換機能を使って192.168.x.xをwww.xxx.xxxに変換している)。スポンサーURL検索の機能では表示されるタイトルやアブストラクトを既にインデキシングを行っているデータベース(DB)から取得する仕様になっているのです。表示したいアドレスは「www.xxx.xxx」なのに存在するデータベースは「192.168.x.x」しかないので、タイトルはURLで表示されるし、アブストラクトはNONEと表示されるし、散々です(汗)。
実はこれに気づくのに日本HPさんに「スポンサーURL検索機能が正常に動かないのですが…」などと恥ずかしい質問もしていたのですが、日本HPさんの超寛大な対応で(フリー版を使っているユーザーであるにも関わらず)ヒントを頂き、このしょうもないエラーに気づきました。ありがとう日本HPさん。そしてしょうもないエラーでごめんなさい。
実際にはスポンサーURL検索の設定ファイルの中の記述を少し加えるだけで解決する問題なのです。
スポンサーURL検索の設定ファイルの中に
0/(タイトル)
1/(検索キーワード)
2/(検索キーワード)
…
100/(アブストラクト)
と「0/」と「100/」を加えれば良いのです。(コマンドラインの)マニュアルには一言も書いていないのですが…。というかこれがわからないとスポンサーURL検索機能は使えないと思いました。たまたま私は社内のものを表示させようとしていたため、インデキシングを「www.xxx.xxx」で行っていたら何の問題もないのでしょうけれども、他のサイトはインデキシングをわざわざしないと表示されないということになるのですから…(データベースがないから)。
そんなわけで任意のタイトルとアブストラクトを表示できるようになり、一件落着なのですがとはいえ、ただ指をくわえて「スポンサーURL検索できない」と言っていたわけではありません。かなり無理矢理Perlを変更して一時的に対応していました。以下はその中身。
/home/MitakeSearch/cgi/lib/libsponsor.pl(linuxの場合)のプログラムの先頭部分に次の3行を追加します。(PerlモジュールのLWPなどを追加しておいて下さい)
それでlibsponsor.plの中の
sub search_sponsor_mdbのサブルーチンの途中を以下のように改変。
\n"; # $r .= "
\n"; # $r .= "
$d[6]\n
\n"; } $r .= "