用于模糊搜索的PHP库?

我正在寻找一个
PHP库,它允许用户基本上使用真正的英语输入命令来运行.基本上我希望用户能够做类似的事情:

请搜索欧洲的所有用户,这些用户等同于用户=’欧洲’的选择*

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

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

注意:如果你能说约翰史密斯,简史密斯和约翰多伊,那也很好

理想情况下,我喜欢这个库,如果它是可扩展的,那么我可以编程一旦某些事情出现,如查找,电子邮件或搜索,用户需要发生的事情

是否有人知道PHP库可以执行上述操作?

最佳答案 据我所知,目前没有用于基于自然语言查询进行搜索的库,既不是PHP也不是任何其他编程语言(我假设你不能使用
IBM Watson :)).

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

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

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

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

哪种方式取决于您的数据和各种预期查询的多样化和嘈杂程度.
您还可以尝试实现混合方法,即使用语法解析文本以及是否使用全文搜索失败.

点赞