pnamazu の opmode ― 2006年07月02日 00時19分20秒
本家 Namazu にはありませんが、pnamazu にある機能の ひとつに opmodeがあります。
CGI 変数 'opmode'
CGI 動作時の QUERY_STRING に opmode という変数があったら、
- 'or' の場合
演算子の無いものを or で扱います。また、従来通り、 それが { } で 囲まれているときは phrase 演算し、 'and', 'or' といった演算子も、 使えます。
- 'inside' の場合
単純な日本語の単語検索のときに、語の前後に '*' がついているもの として扱います。 例: 「京都」は「*京都*」と扱われます。 英数字については、この処理はされません。 従来通り '*' を明示しない限り、 単語単位となります。
- 'forward' の場合
単純な日本語の単語検索のときに、語の後に '*' がついているものとして 扱います。 例: 「京都」は「京都*」と扱われます。 英数字については、この処理はされません。 従来通り '*' を明示しない限り、 単語単位となります。
pnamazu から学ぶ - 携帯電話対応 - ― 2006年02月08日 06時12分59秒
perl 版検索クライアント pnamazu には実験的なものではありますが、本家 Namazu にないいくつかの機能があります。
その一つが携帯電話対応です。
今ではフルブラウザ対応の携帯電話もありますし、1ページ当りの容量も昔よりは大きくなっていますが、それでもパソコンのブラウザよりは制限がかかります。
pnamazu では、携帯電話に対応するため、次の拡張が行われています。
A. NMZ.result.* に ${summary::size=XX} とオプションが指定可能
B. user agent が携帯電話のときは、検索文字列を Shift_JIS として扱い、半角カナに対応
C. 携帯電話モード時に、出力するカタカナを X0201 (いわゆる半角カナ)に変換
A は、summary の長さは他のフィールドと同じサイズでデフォルトは200バイト($MAX_FIELD_LENGTH で指定可能)です。
しかし、携帯電話にとっては長すぎるので、サイズを小さくできるようになっています。
pnamazu のサンプルの NMZ.result.phone では、${summary::size=40} が指定されています。
Bは、携帯電話で検索式を入力する際、いわゆる半角カナ (jis x 0201片仮名) が入力に使われることが多いのですが、cgi 内部では、文字コードの自動判別の際にこれを誤ります。
そのため、user agent が携帯電話のときは、文字コードの自動認識を行わず、Shift_JIS に決め打ちで処理するようになっています。
Cは、半角カナに変換することで、出力データのサイズを抑えたり、限られた表示領域を有効に使うのが目的でしょう。
--------------------------------------------------
[本家Namazuへの応用]
A.
本家 Namazu でも、${xxxx} にオプションを指定できるように拡張することを考えています。
その一つに、出力する文字列のサイズを指定できるようにしたいと思います。オプションの形式は pnamazu とは異なるものになるでしょう。
この際にバイト数を指定するのが良いのでしょうが、出力する文字コードによって同じ文字列でもバイト数は異なるのが頭の痛いところです。
(最後にまとめてコード変換をしたいと考えているので....。)
B.
この当時、携帯電話の文字コードは Shift_JIS が一般だったのかもしれませんが、現在は Shift_JIS とは限りません。UTF-8 はもちろん、EUC-JP もありえます。
このため、user agent による文字コードの決め打ちは難しいでしょう。
ただ、user agent で携帯電話であることはわかるので、これで携帯電話モードに切り替えるとかには使えるでしょう。
個人的には半角カナは大嫌いですが、携帯電話という閉じた世界に限るなら半角カナへの対応は考えなければならない問題だろうとは思います。
C.
出力コードが UTF-8 だと半角カナに変換してもサイズは減らないのですが、限られた表示領域により多くの情報を表示するためには半角カナの方が好まれるかもしれません。
同様に全角記号も半角記号に変換した方が良いかもしれません。
その一つが携帯電話対応です。
今ではフルブラウザ対応の携帯電話もありますし、1ページ当りの容量も昔よりは大きくなっていますが、それでもパソコンのブラウザよりは制限がかかります。
pnamazu では、携帯電話に対応するため、次の拡張が行われています。
A. NMZ.result.* に ${summary::size=XX} とオプションが指定可能
B. user agent が携帯電話のときは、検索文字列を Shift_JIS として扱い、半角カナに対応
C. 携帯電話モード時に、出力するカタカナを X0201 (いわゆる半角カナ)に変換
A は、summary の長さは他のフィールドと同じサイズでデフォルトは200バイト($MAX_FIELD_LENGTH で指定可能)です。
しかし、携帯電話にとっては長すぎるので、サイズを小さくできるようになっています。
pnamazu のサンプルの NMZ.result.phone では、${summary::size=40} が指定されています。
Bは、携帯電話で検索式を入力する際、いわゆる半角カナ (jis x 0201片仮名) が入力に使われることが多いのですが、cgi 内部では、文字コードの自動判別の際にこれを誤ります。
そのため、user agent が携帯電話のときは、文字コードの自動認識を行わず、Shift_JIS に決め打ちで処理するようになっています。
Cは、半角カナに変換することで、出力データのサイズを抑えたり、限られた表示領域を有効に使うのが目的でしょう。
--------------------------------------------------
[本家Namazuへの応用]
A.
本家 Namazu でも、${xxxx} にオプションを指定できるように拡張することを考えています。
その一つに、出力する文字列のサイズを指定できるようにしたいと思います。オプションの形式は pnamazu とは異なるものになるでしょう。
この際にバイト数を指定するのが良いのでしょうが、出力する文字コードによって同じ文字列でもバイト数は異なるのが頭の痛いところです。
(最後にまとめてコード変換をしたいと考えているので....。)
B.
この当時、携帯電話の文字コードは Shift_JIS が一般だったのかもしれませんが、現在は Shift_JIS とは限りません。UTF-8 はもちろん、EUC-JP もありえます。
このため、user agent による文字コードの決め打ちは難しいでしょう。
ただ、user agent で携帯電話であることはわかるので、これで携帯電話モードに切り替えるとかには使えるでしょう。
個人的には半角カナは大嫌いですが、携帯電話という閉じた世界に限るなら半角カナへの対応は考えなければならない問題だろうとは思います。
C.
出力コードが UTF-8 だと半角カナに変換してもサイズは減らないのですが、限られた表示領域により多くの情報を表示するためには半角カナの方が好まれるかもしれません。
同様に全角記号も半角記号に変換した方が良いかもしれません。
pnamazu の整理 ― 2006年01月13日 17時17分23秒
pnamazu のプログラムをV2 のインデックスにのみに対応するように整理するのも良いのではないかと思っています。
現在では Namazu 2.0.X が主流であり、1.X のインデックスに対応している必要はもはやないものと思われます。
いくつかの実験的な機能は削除して良いかもしれません。
プログラムを整理しておけば、Namazu 2.2.X への対応にも役立でしょう。
現在では Namazu 2.0.X が主流であり、1.X のインデックスに対応している必要はもはやないものと思われます。
いくつかの実験的な機能は削除して良いかもしれません。
プログラムを整理しておけば、Namazu 2.2.X への対応にも役立でしょう。
最近のコメント