[英]How to make mysql automatically bold matching words in fulltext search
我试图在标题本身中准确地解释我的问题。 我可以将查询中的匹配词括起来吗 在MySQL查询本身? MySQL查询是:
选择id,FirstName,LastName,addcomments在哪里匹配(FirstName,LastName,addcomments)反对(“某些示例文本”,并带有QUERY EXPANSION)
来自mysql的结果应为:
id | FirstName | LastName | addcomments
1 |<b>some</b> name | lastname <b>text</b> | comments have <b>some sample text</b> inside
任何帮助将不胜感激
这是一个毫无疑问的问题,因为MySQL根本不格式化结果,而是将数据集传递给应用程序。 然后由应用程序来处理所需的数据。
如果您使用的是PHP,则可以在结果上使用str_replace
将关键字替换为关键字的粗体
这里还有一个安全问题-如果您的数据库返回HTML,则必须使用编码输出内容。 这意味着,如果有人设法将恶意记录注入您的数据库,则您的站点可能正在受到XSS攻击或其他讨厌的代码的攻击
您可能会发现,根据输出的显示位置,这将为您带来不同的结果。 例如,正确转义文本以使其在命令行上显示为粗体或彩色,这与以html,rtf或pdf等以粗体打印的方式不同。
如果使用任何显示输出的方法来解决问题,您将获得更可预测和可维护的结果。
谢谢克里斯。 我同意mysql将返回可被任何应用程序使用的通用结果。 但是我可以写一个mysql函数来达到同样的效果吗?
另外,我尝试为此编写php函数,但不起作用:
$searchitems=explode(" ", $trimmed);
$totalSearchItems = count($searchitems);
while ($row= mysql_fetch_array($result))
{
for($i=0;$i<$totalSearchItems;$i++)
{
str_replace($searchitems[$i], '<b>'.$searchitems[$i].'</b>', $row);
}
//Display $row
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.