用于模糊搜索的PHP库?

时间:2013-03-12 19:46:16

标签: php

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

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

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

Lookup (Find) the email address for John Smith

注意:如果你能说for John Smith, Jane Smith, and John Doe

,那也很好

理想情况下,我喜欢这个库,如果它存在可扩展性,那么我可以编程在某些事情出现后需要发生的事情find,emailsearch,users

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

1 个答案:

答案 0 :(得分:2)

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

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

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

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

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

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