yarri/full-text-search-query-like

FullTextSearchQueryLike 是一个 PHP 类,它将搜索字符串转换为带有 LIKE 操作符的智能 SQL 条件。

v0.2 2019-03-23 08:50 UTC

This package is auto-updated.

Last update: 2024-09-25 10:13:40 UTC


README

Build Status Downloads

这是一个 PHP 类,它将搜索字符串转换为带有 LIKE 操作符的智能 SQL 条件。

FullTextSearchQueryLike 已在 PHP 5.6 到 8.1 版本上进行了全面测试。

基本用法

假设有一个名为 articles 的表,其中包含一个我们希望用户可以搜索的字段 title。

$q = $_GET["search"]; // Here comes a user query string, e.g. "beer and wine"

$ftsql = new FullTextSearchQueryLike("title");
if($ftsql->parse($q)){
  $search_condition = "WHERE ".$ftsql->get_formatted_query(); // e.g. "WHERE title LIKE '%beer%' AND title LIKE '%wine%'"
}

$query = "SELECT * FROM articles $search_condition ORDER BY created_at DESC";

转换示例

其他一些特性...

在更多字段中搜索

$q = $_GET["search"];

$ftsql = new FullTextSearchQueryLike("title||' '||body||' '||author");
// or
// $ftsql = new FullTextSearchQueryLike(["title","body","author"]);
if($ftsql->parse($q)){
  $search_condition = "WHERE ".$ftsql->get_formatted_query();
}

$query = "SELECT * FROM articles $search_condition ORDER BY created_at DESC";

不区分大小写的搜索

$q = $_GET["search"];

$ftsql = new FullTextSearchQueryLike("UPPER(title||' '||body||' '||author)");
if($ftsql->parse(strtoupper($q))){
  $search_condition = "WHERE ".$ftsql->get_formatted_query();
}

$query = "SELECT * FROM articles $search_condition ORDER BY created_at DESC";

变量绑定

这在 Oracle 数据库中非常有用。

$q = $_GET["search"]; // Here comes a user query string, e.g. "beer and wine"

$ftsql = new FullTextSearchQueryLike("title");
if($ftsql->parse($q)){
  $bindings = [];
  $search_condition = "WHERE ".$ftsql->get_formatted_query_with_binds($bindings); // e.g. "WHERE title LIKE :search_word_021 AND title LIKE :search_word_022"
}

$query = "SELECT * FROM articles $search_condition ORDER BY created_at DESC";
var_dump($bindings); // e.g. [":search_word_021" => "%beer%", ":search_word_022" => "%wine%"]

关键字高亮器

别忘了使用我的其他工具来在 HTML 输出页面上高亮显示搜索词。

https://packagist.org.cn/packages/yarri/keywords-highlighter

安装

使用 Composer 安装 FullTextSearchQueryLike。

composer require yarri/full-text-search-query-like

测试

在包目录中运行

composer update --dev
cd test
../vendor/bin/run_unit_tests

最后提醒

说实话,代码风格并不出色,所有注释都是捷克语。源代码是从一个非常旧的项目中提取出来的。但是,它一直工作得很好,非常可靠。

我真的很喜欢它,并在我启动的每个新项目中安装它。如果你觉得它很有用,我会很高兴。

许可证

FullTextSearchQueryLike 是免费软件,根据 MIT 许可证 条款发布。