1

我在这里有一个小问题,我尝试创建一些 AI 来响应输入文本,但问题是

说我们有一个名为“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 是 Question 列的值 CONDITION 是 LIKE 条件操作数的条件

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

所以上面的情况是 MATCH

但是,我们有可能反转函数吗?我的意思是,如何读取条件文本中包含的值...

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

之前谢谢,希望有人可以在这里帮助我..

4

1 回答 1

2

这种简单的查询永远不会起作用。使用FULLTEXT index会更好,它允许这种“自然语言”查询。如果出于某种原因您不能使用全文,那么您将不得不进行大量的预处理来构建查询。对于您的第一个样本,它必须是:

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

并且性能绝对会很糟糕,因为完全通配符的子句根本不能使用索引。问题中的单词越多,MySQL 必须执行的全表扫描就越多,并且所有操作所需的时间就越长。

相比之下,查询的全文版本将是

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

并且......在元层面上,我希望这个问题的答案是“你为什么要寻找这个而不是去医院治疗你的烧伤/弹片伤口?”

于 2012-07-09T04:48:30.480 回答