全文検索
Perlのわざと読みにくくしてるんじゃないかと思うようなコードを見ながらPHPで書き直してみたんだけど・・。
function getSearchEncoded($text){ $ascii = '[\x00-\x7F]'; $twoBytes = '[\x8E\xA1-\xFE][\xA1-\xFE]'; $threeBytes = '\x8F[\xA1-\xFE][\xA1-\xFE]'; $words = chasen_split($text); $search = ''; foreach ($words as $word){ preg_match_all("/$ascii|$twoBytes|$threeBytes/", $word, $matches, PREG_PATTERN_ORDER); $maps = array(); foreach ($matches[0] as $match){ $map = unpack('H*', trim($match)); $maps[] = $map[1]; } $search .= ' ' . implode('S', $maps); } return trim($search); }
あってるかどうかがさっぱり不明。。
取り敢えず全文検索が動くようにはなったものの、データが10件くらいじゃわからんー。しかも5件ほどに同じ単語が含まれてたら検索されなくなる。
これがインデックスが使われない場合というやつ?
ちょこちょこ同じようなデータを入れていってたら急に表示が0件になるからびびるというかまずいんじゃないかと思うんだけど・・。
hi is her とか検索しないようにするためなんかな。
千件や一万件くらいならlikeでいいような気がするから深入りしないでおこう。