[Tep-j-general] Re: 検索機能で英語で検索されない件

アーカイブの一覧に戻る

hamada bungu****@leo*****
2006年 5月 9日 (火) 08:53:30 JST


こんにちわ。

# なんか、1人で(びみょーに見当違いの方向で?)納得されちゃってて、
# もはやちとツっ込みづらいのですが…(^_^;)

On Tue, 9 May 2006 00:26:11 +0900
"KO-JI" <notto****@mbn*****> wrote:

> こんなことってあるのですか?

それ、どっかでBINARY型使ってたりしません?

http://dev.mysql.com/doc/refman/4.1/ja/string-comparison-functions.html

> mysql> SELECT 'abc' LIKE 'ABC';
>         -> 1
> mysql> SELECT 'abc' LIKE BINARY 'ABC';
>         -> 0

ということで、BINARY型になってるとlikeでも半角英字の大文字小文字を区別す
るらしーんですけど。

> とりあえず今後は小文字を使うようにします!

/catalog/includes/functions/general.php

>   function tep_parse_search_string($search_str = '', &$objects) {
>     $search_str = trim(strtolower($search_str));
                         ^^^^^^^^^^

なので、この部分が上記のままなら「半角英文字は強制的に小文字に変換されて
検索される」ハズです。小文字云々はそのせいかと。

そして、osCは対象のカラムがBINARY型であるとは想定してない=「MySQLが大文
字小文字を区別しない」と決め打ちしてますんで、

「そうではない」(=半角英字の大文字小文字を区別しちゃう)

ならそれなりにコードに手を加える必要があるのでは?

とりあえず、上記を「strtoupper」にしとけば「強制大文字化検索」ってことに
なりますが、お勧めしません。

BINARY型を止められるならそれが一番良さそうな気がしますが、おそらく日本語
関連の問題で「わざわざBINARY指定してる」んだろうなぁ…。


はまだ




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