faithfm/smart-search-php 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

faithfm/smart-search-php

Composer 安装命令:

composer require faithfm/smart-search-php

包简介

Search/filter using simple Google-style search strings to perform complex filter operations.

README 文档

README

Simple (yet powerful) PHP search/filter providing unified results in multiple contexts:

  • MySQL/other databases (ie: "where" clause builder)
  • PHP arrays
  • Laravel Collections
  • Laravel Models
  • Laravel Nova Resources

Simple Google-style search strings perform complex filter operations across multiple fields.

(PHP backend equivalent of miking/smart-search-filter javascript library JS library)

Screenshot:

smart-search-01.jpg

Installation:

Require this package in the composer.json of your project.

composer require faithfm/smart-search-php

Note: an additional dependency must be manually installed for Laravel Models & Nova Resources. (Applies to Laravel <= 8.x)

Usage Examples:

Start by creating an instance of SmartSearch with the search string, and a list of default search fields:

use FaithFM\SmartSearch\SmartSearch;

$search = 'optus 320 location:stock -F2701';
$smartSearch = new SmartSearch($search, 'asset_id|location|type|make|model|identifier');

The parsed search-string can now be used to perform filtering in one or more contexts:

$filtered = $smartSearch->filterArray($items));
$filteredCollection = $smartSearch->filterCollection($myCollection));
$whereClause = $smartSearch->getSqlFilter());
$data = DB::table('my_table')::where($smartSearch->getBuilderFilter())->get();
// OR
$data = MyModel::where( $smartSearch->getBuilderFilter() )->get();
MyModel::smartSearch('joe', 'location|type')->get();
class MyResource extends Resource
{
    use SmartSearchableNovaResource;
    ...

Search Syntax:

The related miking/smart-search-filter javascript library includes documentation of how a simple Google-style search syntax is used to perform complex filter operations across multiple fields.

Note: Used together these two libraries provide a simple, unified, yet powerful approach to front-end/back-end filtering in modern web applications.

Debug Information:

Under the hood, a "filter operations" array is created when a search string is parsed.
The getFilterOpsDescription() function provides a human-readable representation showing the parsed intent of the search string, and parsing errors are also available:

var_dump($smartSearch->errors);
var_dump($smartSearch->getFilterOpsDescription());

Advanced Options:

The above examples have demonstrated the simple case where only two arguments are provided to the SmartSearch constructor, however a number of other advanced options are also available.

new SmartSearch($searchString, $defaultFields = "", $allowedFields = "", $options = [], Closure $sqlEscapeStringFn = null)

Notes:

  • $allowedFields are the same as $defaultFields if not specified explicitly.

  • Fields lists can be specified in a many different ways:

$defaultFields = 'location,type';       // comma-separated
$defaultFields = 'location, type';      // comma-separated (with spaces)
$defaultFields = 'location|type';       // pipe-separated
$defaultFields = ['location', 'type'];  // array format
//... and pretty much anything else that can be cast to an array (of strings)
  • The $options parameter accepts an associative array or StdClass object and allows things like case sensitivity and sql wildcard characters to be defined. Default options are:
const DEFAULT_OPTIONS = [
    'caseSensitive' => false,
    'sqlWildcard' => '%',
    'sqlWildcardSingleChar' => '_',
];

Note: all filters are currently case-insensitive. The caseSensitive option does not currently work.

  • The $sqlEscapeStringFn can be specified in the constructor instead of calling setSqlEscapeStringFn() later.

faithfm/smart-search-php 适用场景与选型建议

faithfm/smart-search-php 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 3.68k 次下载、GitHub Stars 达 9, 最近一次更新时间为 2022 年 06 月 03 日, 在 PHP 生态内属于活跃度较高的组件。

它主要适用于以下技术方向: 「package」 「template」 「composer」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。

我们在过去多个企业项目中使用过 faithfm/smart-search-php 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。

围绕 faithfm/smart-search-php 我们能提供哪些服务?
定制开发 / 二次开发

基于 faithfm/smart-search-php 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 3.68k
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 9
  • 点击次数: 12
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 9
  • Watchers: 2
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: GPL-3.0-or-later
  • 更新时间: 2022-06-03