netgen/query-translator

Query Translator 是一个具有AST表示的搜索查询翻译器

1.1.0 2022-01-13 09:24 UTC

This package is auto-updated.

Last update: 2024-09-21 12:58:58 UTC


README

Build Status Code Coverage Downloads Latest stable License PHP

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

运行演示的步骤

  1. 使用composer创建演示项目 composer create-project netgen/query-translator-demo
  2. 进入演示项目目录 cd query-translator-demo
  3. 使用src作为文档根启动网络服务器 php -S localhost:8005 -t src
  4. 在您的浏览器中打开 http://localhost:8005,并查看Query Translator 演示