用于模糊搜索的 PHP 库?

标签 php

我正在寻找一个 PHP 库,它允许用户基本上使用真正的英语输入要运行的命令。基本上,我希望用户能够执行以下操作:

Please search for all users in Europe 这等同于 select * where users = 'Europe'

或者我的意图的另一个例子:

查找(查找)John Smith 的电子邮件地址

注意:如果您可以说 for John Smith, Jane Smith, and John Doe 就更好了

理想情况下,我希望这个库具有可扩展性,这样我就可以在某些事情出现时编写需要发生的事情,例如 find,emailsearch,users

有人知道可以执行上述操作的 PHP 库吗?

最佳答案

据我所知,目前没有基于自然语言查询进行搜索的库,无论是 PHP 还是任何其他编程语言(我假设您不能使用 IBM Watson :))。

我认为可行的方法是基于语法的解析器模糊搜索:

使用像 Jison 这样的解析器生成器您可以在用户浏览器上解析和“理解”与生成语法对应的所有语句,仅向服务器发送生成的查询或中间表示。

它比 PHP 解析器更好,因为用户可以在键入时立即得到反馈,而且它比提交表单并收到错误更令人沮丧。在这种情况下,查询解释将是 99% 正确的,但在许多情况下,完全正确(从人类的角度来看)的查询将被拒绝,因为语法没有预见到。

另一种情况,你可以做一些预处理,比如去除停用词,将文本小写,词干提取等,然后用全文搜索引擎搜索(Lucene可能是最强大的,但它是用Java ). PostgreSQL support it MySQL 也有一些全文搜索功能。还可以基于基本 RDBMS 构建原始引擎,使用索引和标记化空格和标点符号的文本。

哪种方式取决于您的数据的多样性和噪声程度以及预期查询的多样性。 你也可以尝试实现一种混合的方法,即使用语法解析文本,如果失败则使用全文搜索。

关于用于模糊搜索的 PHP 库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15370710/

相关文章:

php - 如何将 PHP 数组转换为 $keys 和 $values?

php - WooCommerce 产品 get_stock_quantity() 方法返回 null

PHP curl 字符串语法问题

php - PHP/MySQL 中的字符编码 (i/î/ï)

php - 在php中获取basic-auth用户名

php - PHP 中的 SQL SELECT 语句

php - 在 zend 框架 2 中不是空条件

javascript - 使用javascript从2个选择字段计算数据到输入字段

php - Mysql select 查询性能变差

php - 如何使用 ffmpeg 在 30 秒内从较小/较大文件中提取 30 秒音频