选择任何表中出现文本的行?

时间:2014-06-27 02:40:18

标签: php mysql sql

我正在使用PHP和MySQL。我有两张桌子:

表1 - 3列:ad_id,标题,内容 表2 - 2列:ad_id,位置

现在我该如何进行搜索,例如对于“巴黎的会计师”,所以只有当“会计师”,“在”和“巴黎”位于任何一列的某个地方时,它才会返回行。例如。如果表包含:

表1:

ad_id=1
title="blah"
content="accountants"

表2:

ad_id=1
location="in paris"

我会得到一行

ad_id title location
1     blah  in paris

因为“巴黎的会计师”位于此特定广告ID的任意列中。同样的结果是:

表1:

ad_id=1
title="in"
content="paris"

表2:

ad_id=1
location="accountants"

但是如果表是:

表1:

ad_id=1
title="blah"
content="accountants"

表2:

ad_id=1
location="paris"

我应该不返回任何行,因为“paris”缺失了。这可能与mySQL有关吗?或者我是否必须运行3个单独的查询并以某种方式在php中跟踪结果?

如果我的解释令人困惑,BTW道歉,我发现由于某种原因很难解释。

1 个答案:

答案 0 :(得分:0)

您正在寻找的功能是全文搜索。 MySQL中的documentation在这个主题上是非常彻底的。

您可以在多个列上创建全文索引,这似乎是您正在寻找的功能。此外,它(通常)比单独搜索每个术语要快得多。

关于您的特定搜索的一个警告。单词'in'是一个停用词,因此默认情况下会被忽略。此外,默认情况下会忽略短于4个字符的单词。这两个都可以修改,但如果你试图建立这样的索引,这是一个抬头。