pimcore/search-query-parser
Composer 安装命令:
composer require pimcore/search-query-parser
包简介
Parses a simplified SQL-like query string into a syntax tree which can be used to build search queries
README 文档
README
A basic search query parsing library which can be used to transform free-text searches
into SQL (or other) queries. The analyzed search query can be used to build complex
(SQL) queries, searching for a term in multiple fields. Take a look at the
Zend_Db end to end test an example or have a
look into examples/ for working examples.
Syntax
Search terms can be AND/OR combined, negated, grouped with parentheses and modified to fuzzy exact search with the following syntax:
foofoo* AND bar*foo* OR *bar**foo* OR !*bar**foo* AND barfoo OR (bar AND baz)
Modifiers
Fuzzy search: *<term>*
Negation: !<term> !(<query>) !*<fuzzy-term>
Usage
<?php require_once __DIR__ . '/../vendor/autoload.php'; $input = 'doe AND 1212 AND !foo OR (!(am*ya AND 12) blah) OR baz'; // complex query $input = '*john* !502* AND foobar'; // LIKE %john% AND NOT LIKE 502% AND = foobar // tokenizes query string $lexer = new \SearchQueryParser\Lexer(); // contains array of extracted tokens $tokens = $lexer->lex($input); dump($tokens); // parses tokens into an abstract query $parser = new \SearchQueryParser\Parser(); $query = $parser->parse($tokens); dump($query); // use the Zend_Db query builder to transform the Query into conditions $db = new Zend_Db_Adapter_Pdo_Sqlite(array( 'dbname' => ':memory:' )); // dummy query $select = $db ->select() ->from('foo'); // build conditions for every passed field $queryBuilder = new \SearchQueryParser\QueryBuilder\ZendDbSelect([ 'foo', 'bar' ]); $queryBuilder->processQuery($select, $query); dump($select->__toString());
Using the facade
There's a facade class which can be called if you want to use the standard lexer/parser.
<?php require_once __DIR__ . '/../vendor/autoload.php'; $input = 'foo !bar *doe*'; // returns an abstract query dump(\SearchQueryParser\SearchQueryParser::parseQuery($input));
Tests
There are a couple of simple end-to-end tests checking the output for a defined input. Just run vendor/bin/phpunit from
the project root.
pimcore/search-query-parser 适用场景与选型建议
pimcore/search-query-parser 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 558.55k 次下载、GitHub Stars 达 13, 最近一次更新时间为 2017 年 07 月 11 日, 在 PHP 生态内属于活跃度较高的组件。
我们在过去多个企业项目中使用过 pimcore/search-query-parser 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 pimcore/search-query-parser 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
统计信息
- 总下载量: 558.55k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 14
- 点击次数: 14
- 依赖项目数: 1
- 推荐数: 0
其他信息
- 授权协议: proprietary
- 更新时间: 2017-07-11