我正在使用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道歉,我发现由于某种原因很难解释。答案 0 :(得分:0)
您正在寻找的功能是全文搜索。 MySQL中的documentation在这个主题上是非常彻底的。
您可以在多个列上创建全文索引,这似乎是您正在寻找的功能。此外,它(通常)比单独搜索每个术语要快得多。
关于您的特定搜索的一个警告。单词'in'
是一个停用词,因此默认情况下会被忽略。此外,默认情况下会忽略短于4个字符的单词。这两个都可以修改,但如果你试图建立这样的索引,这是一个抬头。