MySQLの私のft_min_word_len
は4に設定されています.2文字または3文字のフルテキスト検索をしようとすると、結果は得られません。だから私はこれらの短い言葉の全文検索を取得するには、このコードを使用しています:ft_min_word_lenの下の文字でMySQL(PHP)の全文検索
$table = $this->db->shop_products();
$where = '';
preg_match_all("~[\\pL\\pN_]+('[\\pL\\pN_]+)*~u", stripslashes($find), $matches);
foreach($matches[0] as $part) {
$isFirst = empty($where);
$regexp = "REGEXP '" . addslashes($part) . "'";
if(!$isFirst) $where .= " AND (";
$where .= "name {$regexp} OR content {$regexp}";
if(!$isFirst) $where .= ")";
}
return $table->where($where)->limit(5)->fetchAll();
このコードは正常に動作しますが、それはč, á, é, í...
のように、発音区別符号に問題があります。たとえば、bé
という商品があります。ちょうどbe
で検索したいときは、同じ文字がないので、その商品は表示されません。
注:私は、MySQLのクエリのNotORMを使用していますが、私はあなたが$table->where(...
ことを仕事ん方法を知っている願っています。
なぜ「ft_min_word_len」を2に設定しないのですか? – Solarflare
私のウェブサイトでは、私はそのようなことはできません。 – debute