johnsnook / yii2-parsel
允许开发者提供一个类似于 Sphinx 的搜索查询界面
v1.0.0
2018-07-26 15:54 UTC
Requires
- nikic/phlexy: dev-master
- yiisoft/yii2: ~2.0.0
This package is not auto-updated.
Last update: 2024-09-26 16:58:06 UTC
README
允许开发者提供一个类似于 Google 或 Sphinx 搜索或其他全文搜索 (FTS) 引擎的布尔搜索查询界面。
示例结果
SELECT "ip", /* ip address */ "visits", /* how many requests they've made */ "city", "region" FROM /* A table similar to apaches access log. See my extension yii2-ipFilter */ "visitor" WHERE ( ("visitor"."ip" ILIKE '%georgia%') OR ("visitor"."city" ILIKE '%georgia%') OR ("visitor"."region" ILIKE '%georgia%') ) AND ( /** marvel as we efortlessly generate a subquery */ "ip" NOT IN ( SELECT "ip" FROM "visitor" WHERE ( ("visitor"."ip" ILIKE '%atlanta%') OR ("visitor"."city" ILIKE '%atlanta%') OR ("visitor"."region" ILIKE '%atlanta%') ) OR ( ("visitor"."ip" ILIKE '%decatur%') OR ("visitor"."city" ILIKE '%decatur%') OR ("visitor"."region" ILIKE '%decatur%') ) ) )
安装
首选的安装方式是通过 composer。
运行
或添加
php composer.phar require --prefer-dist johnsnook/yii2-parsel "*"
到你的 composer.json
文件的 require 部分。
"johnsnook/yii2-parsel": "*"
使用
"看,我不知道我能说蟠蛇语言!我还有哪些不知道的关于自己的?看看。也许你能做点什么,哪怕是糟糕的,也不知道自己做了什么。"
一旦安装了扩展,只需在你的代码中通过
使用它
$userQuery = 'good AND plenty -licorice'; $parsel = new ParselQuery([ 'userQuery' => $this->userQuery, 'dbQuery' => Script::find() ]); $parsel->dbQuery->all();
标记/行为
要搜索的字段必须是当前文本、varchar 或 char。未来的版本可能会扩展到数字、日期,甚至可能是 JSON。所有搜索词(除非由全匹配操作符指定)都包裹在你的数据库选择的通配符中。搜索 "smart" 等同于 SQL 表达式 '%smart%'
。搜索不区分大小写,只要你的数据库的 LIKE
操作符不区分大小写。PostgreSQL 将使用 ILIKE
。
连接词
'AND' 是默认行为。"smart pretty" 与 "smart AND pretty" 相同。
'OR' 允许查询有更多结果:"smart OR pretty"。
操作符
示例
查看 /examples 中的文件。如果仍然可用,你还可以在这里尝试一个示例 这里
其他阅读材料
PostgreSQL
MySQL
MySQL 的 FULLTEXT 索引和 LIKE 查询的性能分析
致谢
本项目是在修改了优秀的 "Search Query Parser" 项目的基础上构建的。我简化了标记结构,并修改了解析器类,以更好地满足我的需求。他们的许可文件应位于本项目的根目录中。
这两个项目都是通过柏林的 Nikita Popov 的惊人快速 lexer 库 而得以实现的。阅读他关于这个主题的文章 这里。