netgen / query-translator
Query Translator 是一个具有AST表示的搜索查询翻译器
1.1.0
2022-01-13 09:24 UTC
Requires
- php: ^7.0||^8.0
Requires (Dev)
README
Query Translator 接收用户输入的搜索字符串并将其转换为搜索后端可以理解的内容。技术上,它是一个具有抽象语法树表示的搜索查询翻译器。从生成的语法树中,翻译目标可以是任何你需要的东西。通常是一个搜索后端,如Solr和Elasticsearch,或者数据库抽象层。
提供了一套实现语言处理器的接口,其中包含一个名为Galach的已实现语言。Galach实现了一种基于用户输入搜索查询的非官方标准的语法。快速参考
word
"phrase"
(group)
+mandatory
-prohibited
AND
&&
OR
||
NOT
!
#tag
@user
domain:term
错误处理
用户输入意味着你必须预期错误并优雅地处理它们。因此,解析器对错误具有完全的抵抗力。语法树将包含有关对用户输入进行修正的详细信息,以便可以理解。这可以用于清理输入或实现丰富的输入界面,具有建议、语法高亮和错误反馈等功能。
自定义
该实现考虑到自定义。您可以更改用作语法一部分的特殊字符,选择您想要使用的语言元素,实现自己的词项子句,或更改语法树转换为目标输出的方式。
一些用例
- 在您的搜索后端之上提供用户级查询语言
- 在不同搜索后端之上提供通用查询语言
- 控制搜索后端已提供的查询语言的选项
- 比搜索后端提供的更好的错误处理
- 在发送到后端之前分析和处理查询
- 自定义查询语言(同时保持基本语法不变)
- 实现丰富的输入界面(带有建议、语法高亮、错误反馈)
注意:此实现旨在作为库,这意味着它不试图解决查询翻译的具体用例。相反,它旨在成为一个您可以用来实现此类用例的基础。
如何使用
首先将库添加到您的项目中
composer require netgen/query-translator:^1.0
之后,利用提供的功能。如果这些功能不够,请使用扩展点来自定义翻译器的各个部分以满足您的需求。请参阅Galach 文档以获取更多信息。
运行演示
演示作为单独的存储库提供,网址为netgen/query-translator-demo。
运行演示的步骤
- 使用composer创建演示项目
composer create-project netgen/query-translator-demo
- 进入演示项目目录
cd query-translator-demo
- 使用
src
作为文档根启动网络服务器php -S localhost:8005 -t src
- 在您的浏览器中打开 http://localhost:8005,并查看