mysql 태그빼고 검색하려하니 속도가 너무 느려졌어요
본문
내용에서 태그를 제거하고 검색을 하고 싶어서
mysql 에서
CREATE FUNCTION `strip_tags`($str text) RETURNS text
BEGIN
DECLARE $start, $end INT DEFAULT 1;
LOOP
SET $start = LOCATE("<", $str, $start);
IF (!$start) THEN RETURN $str; END IF;
SET $end = LOCATE(">", $str, $start);
IF (!$end) THEN SET $end = $start; END IF;
SET $str = INSERT($str, $start, $end - $start + 1, "");
END LOOP;
END;
strip_tags 함수를 만든 뒤에
bbs/search.php 에서
if (preg_match("/[a-zA-Z]/", $search_str))
$str .= "INSTR(LOWER({$field[$k]}), LOWER('{$search_str}'))";
else
$str .= "INSTR({$field[$k]}), '{$search_str}')";
break;
부분을
if (preg_match("/[a-zA-Z]/", $search_str))
$str .= "INSTR(LOWER(strip_tags({$field[$k]})), LOWER('{$search_str}'))";
else
$str .= "INSTR(strip_tags({$field[$k]}), '{$search_str}')";
break;
으로 수정해주었습니다.
그랬더니 검색속도가 눈에 띄게 느려졌는데 보다 빠르게 검색할 수 있는 방법은 없을까요?ㅠㅠ
알려주시면 정말 감사하겠습니다.
답변 1
없을 것 같습니다.
동일한 데이터 타입의 칼럼을 하나 더 만든 뒤,
저장시에 태그제거한 내용을 해당 칼럼에 저장하여.. 해당 칼럼으로 검색하는 방법은 있을 듯 합니다.
ex. wr_content2 칼럼 생성 -> slf : wr_content2