duncanogle/boolean-search-parser
Composer 安装命令:
composer require duncanogle/boolean-search-parser
包简介
A way to translate Boolean Search logic into MySQL Fulltext Parameters
README 文档
README
The aim of this class is to take a Boolean Search and to convert it into something that can be used in a MySQL Fulltext Search.
The idea came about after recently working a lot with Boolean Search systems, and after reading this StackOverflow question, nothing really exists out there for MySQL.
Big thanks goes to PHP SQL Parser for having such a lovely Tokeniser and related methods, which made this easier.
Goals
- To provide a good-enough conversion
- To not try and correct mistakes with brackets and quotes etc.
Notes
Use
$parser = new \DuncanOgle\BooleanSearchParser\Parser();
echo $parser->parse("ict OR (technology AND bob)");
// ict (+technology +bob)
Regarding order
Order and brackets are important, more often than not OR logic takes priority
sales OR finance AND manager will become sales finance +manager and not sales +finance +manager
Todo
- Handle the * character
- Turn into a package that can be pulled in via composer
- Move tests over to PHP Unit
- Add custom priority settings (currently its OR>AND>NOT)
- Add optional word stemmer like the one used here
Simple Examples
| Input | Output |
|---|---|
ict |
+ict |
ict it |
+ict +it |
ict OR it |
ict it |
NOT ict |
-ict |
it NOT ict |
+it -ict |
web AND (ict OR it) |
+web +(ict it) |
ict OR (it AND web) |
ict (+it +web) |
ict NOT (ict AND it AND web) |
+ict -(+ict +it +web) |
php OR (NOT web NOT embedded ict OR it) |
php (-web -embedded ict it) |
(web OR embedded) (ict OR it) |
+(web embedded) +(ict it) |
develop AND (web OR (ict AND php)) |
+develop +(web (+ict +php)) |
"ict |
null |
"ict OR it" |
+"ict OR it" |
Complex Examples
| Input | Output |
|---|---|
"business development" or "it sales" and (danish or dutch or italian or denmark or holland or netherlands or italy) |
"business development" "it sales" +(danish dutch italian denmark holland netherlands italy) |
(procurement or buying or purchasing) and (marine or sea) and (engineering or engineer) |
+(procurement buying purchasing) +(marine sea) +(engineering engineer) |
统计信息
- 总下载量: 22.27k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 7
- 点击次数: 0
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: unlicense
- 更新时间: 2015-10-26