1

我在 mysql 中使用帮助下一个代码进行 sarch:

SELECT * FROM `articles` WHERE MATCH (title,body) AGAINST ('database');

<html>如何在没有特殊标签(<p>和其他)的情况下在 mysql 中使用搜索?

4

2 回答 2

4

有一个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 ....)"
于 2012-11-16T02:59:56.877 回答
1

在将文本存储在 FULLTEXT 索引的列中之前删除 HTML 标记。如果您需要原始文本,请将其存储在不同的列中。

或者,使用真正的搜索索引器,例如 Lucene。MySQL FULLTEXT 是一种玩具。

于 2012-11-16T02:43:45.323 回答