次のコードのヘルプを使用して、mysql で検索を行います。
SELECT * FROM `articles` WHERE MATCH (title,body) AGAINST ('database');
特別なタグ ( など) を使用せずに mysql で検索を使用するにはどうすればよい<html>
です<p>
か?
次のコードのヘルプを使用して、mysql で検索を行います。
SELECT * FROM `articles` WHERE MATCH (title,body) AGAINST ('database');
特別なタグ ( など) を使用せずに mysql で検索を使用するにはどうすればよい<html>
です<p>
か?
これを行うことができるphp関数があります
strip_tags($text);
ここで詳細情報を見つけることができます http://php.net/manual/en/function.strip-tags.php
それでも mysql でこれを行いたい場合は、独自の関数を定義する必要があります
delimiter ||
DROP FUNCTION IF EXISTS strip_tags||
CREATE FUNCTION strip_tags( x longtext) RETURNS longtext
LANGUAGE SQL NOT DETERMINISTIC READS SQL DATA
BEGIN
DECLARE sstart INT UNSIGNED;
DECLARE ends INT UNSIGNED;
SET sstart = LOCATE('<', x, 1);
REPEAT
SET ends = LOCATE('>', x, sstart);
SET x = CONCAT(SUBSTRING( x, 1 ,sstart -1) ,SUBSTRING(x, ends +1 )) ;
SET sstart = LOCATE('<', x, 1);
UNTIL sstart < 1 END REPEAT;
return x;
END;
||
delimiter ;
関数を定義した後、検索クエリで関数を呼び出します
$q="CALL strip_tags(SELECT textarea FROM table where ....)"
FULLTEXT インデックスが作成された列にテキストを格納する前に、HTML タグを削除してください。元のテキストが必要な場合は、別の列に保存してください。
または、Lucene などの実際の検索インデクサーを使用します。MySQL FULLTEXT はおもちゃのようなものです。