我在 mysql 中使用帮助下一个代码进行 sarch:
SELECT * FROM `articles` WHERE MATCH (title,body) AGAINST ('database');
<html>
如何在没有特殊标签(<p>
和其他)的情况下在 mysql 中使用搜索?
我在 mysql 中使用帮助下一个代码进行 sarch:
SELECT * FROM `articles` WHERE MATCH (title,body) AGAINST ('database');
<html>
如何在没有特殊标签(<p>
和其他)的情况下在 mysql 中使用搜索?
有一个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 是一种玩具。