当前位置:首页 > PHP

php搜索功能的实现

2026-02-13 15:25:53PHP

数据库查询实现搜索

在PHP中实现搜索功能,最基本的方式是通过SQL的LIKE语句查询数据库。创建一个搜索表单,用户输入关键词后,使用预处理语句防止SQL注入。

$searchTerm = $_GET['search'] ?? '';
$stmt = $pdo->prepare("SELECT * FROM products WHERE name LIKE :search");
$stmt->execute([':search' => "%$searchTerm%"]);
$results = $stmt->fetchAll(PDO::FETCH_ASSOC);

全文索引优化

对于大量数据,LIKE查询效率低下。在MySQL中创建FULLTEXT索引能显著提升搜索性能:

ALTER TABLE products ADD FULLTEXT(name, description);

使用MATCH...AGAINST语法进行全文搜索:

$stmt = $pdo->prepare("SELECT * FROM products 
    WHERE MATCH(name, description) AGAINST(:search IN NATURAL LANGUAGE MODE)");

使用Elasticsearch

对于复杂搜索需求,集成Elasticsearch提供更强大的功能。安装官方PHP客户端后:

$client = Elastic\Elasticsearch\ClientBuilder::create()->build();
$params = [
    'index' => 'products',
    'body'  => [
        'query' => [
            'multi_match' => [
                'query'  => $searchTerm,
                'fields' => ['name^3', 'description']
            ]
        ]
    ]
];
$response = $client->search($params);

前端自动补全

结合jQuery UI的autocomplete实现搜索建议:

$("#search").autocomplete({
    source: "search_suggest.php",
    minLength: 2
});

对应的PHP处理脚本:

$term = $_GET['term'];
$stmt = $pdo->prepare("SELECT name FROM products WHERE name LIKE :term LIMIT 10");
$stmt->execute([':term' => "%$term%"]);
echo json_encode($stmt->fetchAll(PDO::FETCH_COLUMN));

搜索结果高亮显示

在显示结果时突出显示匹配关键词:

function highlight($text, $words) {
    $words = preg_replace('/\s+/', '|', preg_quote($words));
    return preg_replace("/($words)/i", '<mark>$1</mark>', $text);
}

分页处理

对于大量搜索结果实现分页:

$perPage = 10;
$page = $_GET['page'] ?? 1;
$offset = ($page - 1) * $perPage;

$stmt = $pdo->prepare("SELECT SQL_CALC_FOUND_ROWS * FROM products 
    WHERE name LIKE :search LIMIT $offset, $perPage");
$total = $pdo->query("SELECT FOUND_ROWS()")->fetchColumn();

php搜索功能的实现

标签: 搜索功能php
分享给朋友:

相关文章

php实现递归

php实现递归

递归的基本概念 递归是一种函数调用自身的技术,适用于解决可以分解为相同子问题的问题。在PHP中,递归需要明确的终止条件(基线条件),否则会导致无限循环。 递归实现阶乘 阶乘是经典的递归案例,n!…

php验证码实现

php验证码实现

验证码实现方法 在PHP中实现验证码功能通常涉及生成随机字符串或数字,将其转换为图像,并通过会话(Session)进行验证。以下是几种常见的实现方式: 使用GD库生成图像验证码 GD库是PHP内置…

php 实现验证码

php 实现验证码

使用 PHP 生成验证码 验证码(CAPTCHA)用于防止自动化脚本提交表单,以下是几种常见的 PHP 实现方法。 使用 GD 库生成图片验证码 GD 库是 PHP 的图像处理扩展,可用于生成验证…

php验证码的实现

php验证码的实现

PHP 验证码实现方法 使用 GD 库生成基础验证码 创建画布并生成随机字符串作为验证码内容: session_start(); $width = 120; $height = 40; $image…

php实现静态

php实现静态

静态化实现方法 PHP实现静态化主要通过生成HTML文件或缓存机制来减少服务器动态解析的开销。以下是几种常见方法: 生成静态HTML文件 通过file_put_contents()将动态内容保存为…

php实现的分页

php实现的分页

PHP 实现分页的方法 基本分页逻辑 分页的核心在于计算总页数、当前页码以及数据偏移量。假设每页显示 10 条数据: $current_page = isset($_GET['page']) ? (…