namazu-ml(avocado)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: MacOS 8.5 Sherlock bug
森本@イマジカです。こんにちは。
On Fri, 23 Oct 1998 17:34:17 +0900,
Kenji Suzuki <kenji@xxxxxxxxxxxxxxxx> wrote:
> > Sherlock の件、以下のはどうでしょう。Namazu 側対応いらんかも。
> > ごめんなさい、いまいろいろテストしている時間がなくて。
> > ヒントだけ投げて逃げる。
:
> > # この行を追加してみる
> > charset="iso-2022-jp"
:
> やってみましたが,ダメでした.
昨日は途中で逃げちゃってすいません :-)
Sherlock 定義ファイルに charset="iso-2022-jp" 無し、
NMZ.head.ja に <META HTTP-EQUIV.. 無しで ok でした。
あまり namazu な話題ではありませんが、自分でやってみた結果をまとめます。
● Sherlock 定義ファイル側
Sherlock 定義ファイルはプレインテキストである。
(もちろん MS 漢字コード, 改行は LF)
(namazu 向けの)スケルトンは以下のような感じ:
----------------------------------------------------------------
<search
name = "検索サービスの名称"
action = "http://www.foo.co.jp/cgi-bin/namazu.cgi"
method = get
queryEncoding=2561
# オプション
description = "より詳しい説明"
# これもオプション. 検索結果のペインに出す画像
# うまく出ないときがあるが原因不明
bannerImage = "http://www.foo.co.jp/buy_it.gif"
# 上の bannerImage をクリックしたときの飛び先.
# 本当はオプションだが, bannerImage を指定するなら書いたほうがいい
bannerLink = "http://www.foo.co.jp/"
>
<input name="key" user>
<input name="max" value="100">
<input name="format" value="long">
<input name="lang" value="ja">
<interpret
resultEncoding=2080
resultTranslationEncoding=1
resultTranslationFont="Osaka"
resultListStart="<DL>"
resultListEnd="</DL>"
resultItemStart="<DT>"
resultItemEnd="<BR><BR>" # <BR> ふたつ
relevanceStart = "</STRONG> (score:"
relevanceEnd = ")"
# オプション
# bannerStart = "pattern"
# bannerEnd = "pattern"
>
</search>
----------------------------------------------------------------
要は, CGI で返された内容に単純パターンマッチを行って結果を拾い、
活用するもの。
もちろん従来通りローカル/ネットワークディスクの検索機能も持っている。
tkNamazu, bnamazu, namazu.el や Emacs の M-x grep, find, locate の遠い
親戚のようなものか。
`resultListStart' から `resultListEnd' にマッチする間の結果を吟味対象
とし, そのなかの `resultItemStart' から `resultItemEnd' にマッチするも
のを検索結果ひとつとして拾う.
拾われた検索結果の HTML 片において、ある程度の HTML タグは Sherlock の
表示結果に反映される。(A, H1〜H6, B, I, etc..)
さらに, それぞれの検索結果のスコアも意識する.
`resultItemStart' から `resultItemEnd' の*中の*、
`relevanceStart' から `relevanceEnd' の中にある, 最初の数値パターンを
スコア値として拾う.
ただ、このスコアの範囲は 0〜100 なので、namazu と Sherlock を
きちんと対応させるためには、Namazu 側にも工夫が必要。(後述)
単純パターンマッチであり、SGML タグ/エレメントのスタックは意識しないの
で、
resultListStart="<DIV CLASS=list>"
resultItemStart="<DIV CLASS=item>"
resultItemEnd="</DIV>"
resultListEnd="</DIV>"
<DIV CLASS=list>
<DL>
<DIV CLASS=item>
<DT>検索結果1: <A HREF="http://www.foo.com/">なんたら</A></DT>
<DD>かんたら..</DD>
</DIV>
<DIV CLASS=item>
<DT>検索結果2: <A HREF="http://www.bar.com/">ほげほげ</A></DT>
<DD>もごもご..</DD>
</DIV>
</DL>
</DIV>
のような定義は動作しない.
__
また、検索結果ごとに結果表示ペインに出すべきバナー内容を
(resultItemStart 〜 resultItemEnd の中の)
bannerStart 〜 bannerEnd のパターンマッチで拾う.
これは、各検索結果*ごと*に出てくる HTML 片を拾うものなので注意。
パソコンに関するリンクだったらパソコン通信販売業者のバナー、
クルマやバイクの話題だったら結婚相談所..とか..だった ^^;
商用サーチエンジンではこの機能は死活問題なのかもね。
この機能を活用するならば、少なくとも Sherlock からの検索時に
のみバナー(の HTML)を送出する、など配慮すべきである。(後述)
__
Sherlock 定義ファイルに charset="iso-2022-jp" は*入れない*。
入れるとかえって化ける.
bannerLink 無指定時は, bannerImage クリックにて action の URL に
飛ぶはず。しかし飛び先に 2 バイトほどゴミがついてエラーになる.
(CR とか LF の類ではない) これは Sherlock のバグ.
bannerLink は明示的に指定したほうがよい.
これを Creator: fndf, Type: issp に変更してできあがり.
MacOS はファイルの拡張子なぞ関係ないが、他の Sherlock 定義ファイルは
みな *.src になっているので、同じく *.src にしておいたほうが
なんとなく安全?
また, 定義ファイルのアイコンに任意の画像をペーストしておくと, Sherlock
画面にて、また検索結果にて反映される. おすすめ.
● CGI Script (namazu) 側
Sherlock に対応させる場合は, NMZ.head.ja に
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-2022-jp">
を入れない。
Sherlock 側は定義ファイルの別項目にてキャラクタセットを独自の数値で
定義できるので、化ける心配はない(だろう).
また, iso-2022-jp は euc-jp or x-sjis と明らかにバイトパターンが異なる
ので、たとえ MSIE 3.x でも、根本的なキャラクタセットの判定間違いは起こ
りにくい(だろう).
__
表示するスコアのすりあわせ.
Sherlock は relevanceStart 〜 relevanceEnd 間の数値をスコアとして
受け取り、棒グラフとして表示し、これに基づいて結果をソートする(ことが
できる)が、対応する値範囲は 0〜100 である。
Namazu のスコアは「比率」ではないので、どうもうまくない。
また、各種サーチエンジンの結果をひとまとめに表示、ソートできるのが
Sherlock の売りのひとつなので、namazu の返すスコアがあまりに大きい、
または小さいと不便。
# 下世話な対策として、サーチエンジン各社がみな 100% に近い
# スコアを返して、なるべく Sherlock の表示上位を狙いだしら
# すっげーイヤかも(笑)
その場しのぎとしては、mknmz 内のスコア値要素をいじる、hlist.c の
552 行あたりに手を入れて、「なんとなく」0〜100% っぽい数値に
してやることは、できる..
なお、100 以上の数値を返しても, Sherlock は 100 で切り捨てるようなので
大丈夫。
__
より進んだ設定としては、HTTP_USER_AGENT =~ / Apple Find / だったら
Sherlock パターンマッチ用のシグネチャを入れる、Sherlock ユーザ向けの
リンクを「検索結果のひとつ」として入れる、簡素な HTML を返す、
などができる。これもおすすめ。
MacOS 8.5 出荷時に Sherlock に定義済みのサーチエンジン各社もこれをやっ
ている。
● 参考
http://www.apple.com/sherlock/plugindev.html
http://developer.apple.com/technotes/tn/tn1141.html
.. 森本 淳 (Jun Morimoto) ...........................................
.. IMAGICA Internet Planning Bureau - `Marib' .......................
.. morimoto@xxxxxxxxxxxxxxxxxxx http://members.xoom.com/morimoto/ ..