2013-03-12 65 views
4

我正在寻找一个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

理想情况下,我想这个图书馆,如果它存在可扩展,所以我可以编程一次需要发生什么ce某些东西出现像find,emailsearch,users

是否有人知道可以做类似上述的PHP库?

+0

您是否在寻找一个图书馆,或者您会接受提示来编写自己的图书? – Voitcus 2013-03-12 19:55:43

+0

我几乎想知道这是不是我自己写的东西。 – Peter 2013-03-12 20:07:25

回答

2

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

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

使用的解析器生成像Jison可以解析和对应于所有语句的用户的浏览器“理解”生成语法,只将生成的查询或中间表示发送给服务器。

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

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

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