2013-03-12 63 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的原始引擎,並在空格和標點符號上標記文本。

哪種方式取決於您的數據和各種預期查詢的多樣性和嘈雜程度。 您也可以嘗試實現一種混合方法,即使用語法解析文本以及是否使用全文搜索失敗。