php 关键词搜索结果高亮

一、SQL语句中的模糊查找
       主要通过LIKE(不区分大小写)关键字实现模糊查找。LIKE条件一般用在指定搜索某字段的时候, 通过"%"或者" _" 通配符的作用实现模糊查找功能,通配符可以在字段前面也可以在后面或前后都有。只通过LIKE是无法实现模糊查找的,因此通配符的作用不可忽略。


下面是三个实例:
搜索以PHP开头:
SELECT * FROM table WHERE title  LIKE  'PHP%' 


搜索以PHP结束:
SELECT * FROM table WHERE title  LIKE  '%PHP'


搜索包含PHP100:
SELECT * FROM table WHERE title  LIKE  '%PHP%' 


注:%表示0个或多个字符构成的字符串,_表示单个字符,类似于正则表达式中元字符的作用
在LIKE后面可以增加其他条件,类似于if语句
例子的数据库中的内容




<?php  
    $conn = @mysql_connect("localhost", "root", "") or die("数据库链接错误");  
    mysql_select_db("bbs", $conn);  
    mysql_query("set names 'utf-8'"); //使用utf8中文编码;  
      
    if($_GET['key']) {  
          
        $sql = "SELECT * FROM `text` WHERE content LIKE '%$_GET[key]%'";  
        $query = mysql_query($sql);  
          
        while($r=mysql_fetch_array($query)) {  
            echo "$r[content]"."<br>";  
        }  
    }  
      
?>  
  
<html>  
    <body>  
    <form action="" method="get">  
    关键字:  
    <input type="text" name="key" />  
    <input type="submit" name="sub" value="搜索" />  
    </form>  
    </body>  
</html>  




二、多个关键字搜索的原理和技巧
单个关键字搜索的步骤:提交表单->PHP文件接收关键字->执行SQL->输出结果
如果是多关键字的时候:在提交表单的时候将多个关键字用空格或+号分隔开,然后PHP文件接收到所提交的字符串后,通过一些函数如:explore函数将字符串拆分成多个关键字存放在数组中;然后就可以在数据库中通过多个LIKE模糊查找得到所要查找的内容。


三、替换关键字高亮显示
通过模糊查找得到所要的内容后,使用正则表达式替换所要查找的内容,可以通过改变颜色,加粗等改变显示的效果。


<?php  
    $conn = @mysql_connect("localhost", "root", "") or die("数据库链接错误");  
    mysql_select_db("bbs", $conn);  
    mysql_query("set names 'utf-8'"); //使用utf8中文编码;  
      
    if($_GET['key']) {  
        $k = explode(" ", $_GET[key]);  
          
        $sql = "SELECT * FROM `text` WHERE content LIKE '%$k[0]%' or content LIKE '%$k[1]%'";  
        $query = mysql_query($sql);  
          
        while($r=mysql_fetch_array($query)) {  
            $r[content] = preg_replace("/($k[0])/i", "<font color=red><b>\\1</b></font>", $r[content]);  
            $r[content] = preg_replace("/($k[1])/i", "<font color=red><b>\\1</b></font>", $r[content]);  
            echo "$r[content]"."<br>";  
        }  
    }  
      
?>  
  
<html>  
    <body>  
    <form action="" method="get">  
    关键字:  
    <input type="text" name="key" />  
    <input type="submit" name="sub" value="搜索" />  
    </form>  
    </body>  
</html>
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Elasticsearch是一个开源的、分布式的搜索和分析引擎,可以用于存储、搜索和分析各种类型的数据。其中的关键词搜索功能非常强大,并且支持对搜索结果中的关键词进行高亮显示。 在Elasticsearch中,关键词搜索是通过使用查询DSL语句来实现的。用户可以利用Elasticsearch提供的各种查询语句来构建复杂的搜索条件,从而得到符合要求的搜索结果。在查询结果中,如果某个字段中包含了用户输入的关键词,Elasticsearch会将这些关键词进行高亮显示,以突出显示搜索结果中的关键信息。 为了实现关键词高亮显示,用户需要在查询DSL语句中设置highlight字段,并指定需要高亮的字段名。同时,还可以根据需要设置高亮的标签、前缀和后缀等参数。当搜索结果返回时,Elasticsearch会将匹配到的关键词用指定的标签包裹起来,并添加前缀和后缀,以达到高亮显示的效果。 通过关键词搜索高亮功能,用户可以更快速、准确地定位到所需信息。这在很多应用场景下非常有用,比如电商网站的商品搜索、新闻网站的文章搜索等。用户只需输入相关的关键词,Elasticsearch会迅速返回匹配的搜索结果,并将关键词搜索结果中进行高亮显示,提供更好的搜索体验。 总之,Elasticsearch中的关键词搜索高亮功能使得用户能够轻松地进行全文搜索,并提供了良好的可定制性,可以根据实际需求设置高亮显示的样式和方式,提升搜索结果的可读性和用户体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值