Emmy Matsuo
emmy****@sheha*****
2005年 11月 14日 (月) 11:52:24 JST
はじめまして。松尾と申します。 いつも参考にさせていただいております。 osCommerce 2.2ms1j をホスティングで運営しようとしています。 環境は PHP 4.1.2 MySQL 3.23.58 です。 詳細検索時に、検索したキーワードが含まれている商品は全部ヒットするのですが、 それ以外にもキーワードが含まれていない商品が多数ヒットしてしまうので、 この部分を改善したいと思っています。 SQLのログをとってみたところ、例えば「ねこ」で検索してみると以下のように なっていました。(適当に改行します) select count(*) as total from products p left join manufacturers m using (manufacturers_id), products_description pd left join specials s on p.products_id = s.products_id, categories c, products_to_categories p2c where p.products_status = '1' and p.products_id = pd.products_id and pd.language_id = '4' and p.products_id = p2c.products_id and p2c.categories_id = c.categories_id and ((pd.products_name like '%ろこ%' or p.products_model like '%ろこ%' or m.manufacturers_name like '%ろこ%' or pd.products_description like '%ろこ%') ) 他のlikeを含むselect文も同様に「ねこ」が「ろこ」になっています。 また、「草」→「瘰」、カタカナの場合も「サッカー」→「サャカー」に なっていました。ただ、文字化けしない場合もあります(「ウサギ」とか)。 検索に関するプログラムは、メーリングリストを見て、空白区切りでAND検索 をするために /catalogue/includes/functions/general.php に以下の2行を 足したくらいで、他はカスタマイズしていません。 > $search_str = mb_convert_kana($search_str, "sKV"); > $search_str = ereg_replace('[[:space:]]+', ' and ', trim($search_str)); 過去ログを見ましたが、同じような問題が見つけられなかったため 質問させていただきました。 どなたかヒントをいただければ有り難いです。よろしくお願いします。 ------------------------------ 松尾 恵実 emmy****@sheha*****