1

次のコードのヘルプを使用して、mysql で検索を行います。

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

特別なタグ ( など) を使用せずに mysql で検索を使用するにはどうすればよい<html>です<p>か?

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 に答える