2012-07-09 61 views
1

我有痘痘問題就在這裏,我試圖創建一些AI將響應輸入文本,但問題是如何獲取AI的MySQL查詢?

說,我們有一個名爲「AI」包含列「答案」和「問題」數據庫

如果我試着問:「嘿,爲什麼我的手機爆炸」使用查詢

SELECT * FROM AI where question LIKE "%Hey why are my mobile explode%" LIMIT 1 

,我有這樣的數據庫記錄...

Question | Answer 
================================ 
Explode | because you got suck 

我沒有什麼結果,從我的查詢,但如果我改變的記錄和查詢更改爲喜歡這個......

查詢

SELECT * FROM AI where question LIKE "%explode%" LIMIT 1 

數據庫

Question      | Answer 
======================================================= 
Hey why are my mobile Explode | because you got suck 

我得到了回報。

因此得出的結論是,「LIKE」操作數被讀取爲包含條件文本的值...

VALUE是問題柱 條件的值是上LIKE條件OPERAND條件

Value = ... are my mobile **explode** 
Condition = **explode** 

所以上述情況是MATCH

但是,是有可能,我們反轉函數?,我的意思是,如何讀取包含在條件文本的價值...這就是之前

Value = ... **explode** 
Condition = "....are my mobile **explode** 

感謝,希望有人能幫助我在這裏..

回答

2

這樣簡單的查詢將無法工作。你最好使用FULLTEXT index,它允許這樣的「自然語言」查詢。如果無論出於何種原因都無法使用fulltext,那麼您將不得不做大量的預處理來構建查詢。對於第一個樣品,它不得不爲:

SELECT ... WHERE (question LIKE '%hey%') OR (question like '%why%') OR (quetsion LIKE '%...%') 

和性能將是絕對糟糕,因爲像全通配條款不能使用索引的。問題中的詞語越多,MySQL將不得不做的全表掃描越多,所需的時間越長。

相比之下,查詢的全文版本將

SELECT ... WHERE MATCH question AGAINST ('Hey why are my mobile explode'); 

和...在元的水平,我希望這個問題的答案是:「你爲什麼尋找這個,而不是去醫院讓你的燒傷/彈片傷口得到治療?「

+0

我得到這個錯誤....找不到匹配列列表的FULLTEXT索引..會發生什麼? – 2012-07-09 06:44:03

+0

嘿,我剛剛做到了...很棒..謝謝你..現在我的AI工作得很好... – 2012-07-09 09:43:28