2012-07-09 56 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