[Tep-j-general] Re: 商品検索の高機能版はないでしょうか?

アーカイブの一覧に戻る

hamada bungu****@leo*****
2005年 10月 7日 (金) 16:23:50 JST


こんにちわ。

On Fri, 07 Oct 2005 11:19:59 +0900
高橋  <ttaka****@ybb*****> wrote:

> osCommerce 2.2 日本語版でも、半角文字の大文字小文字は同じ扱
> いで検索してくれていますが、全角、半角は無視してくれません。

MySQLのlikeそのまんまですからねぇ(^_^;)

> 1.全角、半角、大文字、小文字 ←全て無視

当方は↓こんな風にしてるみたいです。

> $where_str .= "(pd.products_name like '%" .
> addslashes(mb_convert_kana($search_keywords[$i], 'a')) . "%' or
> pd.products_name like '%" .
> addslashes(mb_convert_kana($search_keywords[$i], 'A')) . "%'";
> 
> $where_str .= " or p.products_model like '%" .
> addslashes(mb_convert_kana($search_keywords[$i], 'a')) . "%' or
> p.products_model like '%" .
> addslashes(mb_convert_kana($search_keywords[$i], 'A')) . "%'";
> 
> $where_str .= " or m.manufacturers_name like '%" .
> addslashes(mb_convert_kana($search_keywords[$i], 'a')) . "%' or
> m.manufacturers_name like '%" .
> addslashes(mb_convert_kana($search_keywords[$i], 'A')) . "%'";

> if (isset($HTTP_GET_VARS['search_in_description']) &&
> ($HTTP_GET_VARS['search_in_description'] == '1')) $where_str .= " or
> pd.products_description like '%" .
> addslashes(mb_convert_kana($search_keywords[$i], 'a')) . "%' or
> pd.products_description like '%" .
> addslashes(mb_convert_kana($search_keywords[$i], 'A')) . "%'";

(※当方環境ではtep_parse_search_string()で「空白区切り化」のため文字列
が"sKV"されている→この段階ではそういった変換が挟まらない)

これだけでは言われてる機能に足りませんが。

"a"→strtoupper/strtolower→"A"としたものを、更にorしとく手も考えられま
すが、これってあまりにバカっぽいような(^^;;

なおかつ、ここまでしても「AbCd」みたいな被検索文字列には対応出来ない
→検索されるショップ側のデータを、なるべく(半角)正規化しといたほうがい
いんでしょね。

/adminでPOSTされたデータを、insertする前に"a"しとくとか。

はまだ



※ 文中の"引数"は、全てmb_convert_kana()のオプションスイッチです






Tep-j-general メーリングリストの案内
アーカイブの一覧に戻る