我正在寻找一个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,email
或search,users
是否有人知道可以执行上述操作的PHP库?
答案 0 :(得分:2)
据我所知,目前没有用于基于自然语言查询进行搜索的库,既不是PHP也不是任何其他编程语言(我假设你不能使用IBM Watson :))
我认为可行的方法是基于语法的解析器和模糊搜索:
使用像Jison这样的解析器生成器,您可以在用户浏览器上解析和“理解”与生成语法相对应的所有语句,只向生成的查询或中间表示发送到服务器。
它比PHP解析器更好,因为用户可以在键入时立即获得反馈,并且比提交表单并获得错误更不令人沮丧。在这种情况下,查询解释将是99%正确,但在许多情况下,完全正确(从人的角度来看)查询将被拒绝,因为语法无法预见。
在另一种情况下,你可以做一些预处理,比如删除停用词,使文本小写,词干等,然后用全文搜索引擎搜索(Lucene可能是最强大的,但它是用Java编写的) )。 PostgreSQL support it以及MySQL都有一些全文搜索功能。也可以使用空格和标点符号上的索引和标记化文本,基于基本RDBMS构建基本引擎。
哪种方式取决于您的数据多样化和嘈杂以及各种预期的查询。 您还可以尝试实现混合方法,即使用语法解析文本以及是否使用全文搜索失败。