Namazu-users-ja(旧)


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Namazu関数で英数字を含む単語は検索できません。



寺西です。

Youichi Iwakiri wrote:
> 
> Tadamasa Teranishi wrote in <3F51A221.EAE90AD@xxxxxxxxxxxxxxx> :
> >PHP の namazu が namazu のどのルーチンを呼び出しているのかわかりま
> >せんが、検索文字列の全角英数字を半角英数時に変換するルーチンを通さず
> >直接検索ルーチンを呼び出しているのではないかと想像します。
> 
> nmz_search()を呼んでいます。

ということは、

> query stringに関しては、
>   string nmz_codeconv_query($str);
> という関数を提供しているので、必要に応じてNamazuの提供する
> 変換ルーチンを利用できます。

というよりも、普通は nmz_codeconv_query() を使うべきなんでは
ないかと。(必要に応じてというよりは、必須に近いはず)

zen2han() 以外にも jistoeuc(), sjistoeuc() といった EUC に変換する
処理もなしに nmz_search() だけを呼ぶというのはまずいですね。
# かならず EUC 文字列しか扱わないというケースもあるでしょうが。

言い方を変えると、検索文字列を nmz_codeconv_query() で変換して
nmz_search() を呼ぶという使い方が普通で、nmz_search() に
直接、検索文字列を渡すという使い方がまずいということですね。

# しかし、なんで分かれてるんだろう。nmz_search() の中から
# nmz_codeconv_query() を呼んでもよさそうなものを。
 
> >また、フレーズ検索や正規表現の検索ができないようでしたら、ワード検索
> >のルーチンを呼び出しているのではないかと思います。
> >(こっちは特に自信なし。)
> 
> そんな、無茶な使い方はしてないですよ。:)

nmz_search() 内でわかち書きはしているので、nmz_codeconv_query()
が通っていないとも思いませんでした。
そのため、do_word_search() でも呼んでいるのかなと思ってのことですが、
これは static なので呼べませんね。失礼。

やっぱり nmz_codeconv_query() が nmz_search() から外れているのは
不思議。
-- 
=====================================================================
寺西 忠勝(TADAMASA TERANISHI)  yw3t-trns@xxxxxxxxxxxxxxx
http://www.asahi-net.or.jp/~yw3t-trns/index.htm
Key fingerprint =  474E 4D93 8E97 11F6 662D  8A42 17F5 52F4 10E7 D14E