繁体   English   中英

如何在全文搜索中使mysql自动加粗匹配单词

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM