当前位置:首页 > 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);
}

分页处理

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

php搜索功能的实现

$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实现websocket

php实现websocket

PHP 实现 WebSocket WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议。PHP 可以通过多种方式实现 WebSocket 功能,以下是几种常见的方法: 使用 Ratc…

php实现上传

php实现上传

PHP 文件上传实现 HTML 表单设置 创建一个包含文件上传字段的 HTML 表单,确保表单的 enctype 属性设置为 multipart/form-data,这是文件上传必需的设置。 <…

php 实现下载

php 实现下载

PHP 实现文件下载的方法 使用 PHP 实现文件下载可以通过设置 HTTP 头信息,强制浏览器将文件作为附件下载而非直接打开。 基本下载实现 $file_path = 'path/to/your/…

php实现统计

php实现统计

PHP 实现统计功能 在 PHP 中实现统计功能通常涉及数据的收集、处理和展示。以下是一些常见的统计实现方法: 数据库数据统计 通过 SQL 查询可以直接从数据库中获取统计结果: $conn =…

php实现进度条

php实现进度条

PHP 实现进度条的方法 使用 HTML 和 CSS 结合 PHP 实现进度条 在 PHP 中,进度条通常通过 HTML 和 CSS 实现,PHP 负责计算进度并更新前端显示。 <div st…

php实现分享功能实现

php实现分享功能实现

实现PHP分享功能的方法 在PHP中实现分享功能可以通过多种方式完成,以下是一些常见的实现方法: 使用社交媒体分享按钮 社交媒体平台如Facebook、Twitter、LinkedIn等提供了现成…