我正在使用PHP和MySQL。我有两张表:
表1-3列: ad_id、标题、内容表2-2列: ad_id、位置
现在,我如何执行搜索,例如搜索"accountants in paris“,这样只有当"accountants”、" in“和"paris”位于任何列中的某个位置时,它才会返回行。例如,如果表包含:
表1:
ad_id=1
title="blah"
content="accountants"表2:
ad_id=1
location="in paris"我要去划一排
ad_id title location
1 blah in paris因为“巴黎的会计师”在这个特定ad_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中跟踪结果?
顺便说一句,如果我的解释令人困惑,我很抱歉,我发现由于某些原因很难解释。
发布于 2014-06-27 10:44:43
您正在寻找的功能是全文搜索。MySQL中的documentation在这个问题上做得相当透彻。
您可以在多个列上创建全文索引,这似乎就是您正在寻找的功能。此外,它(通常)比单独搜索每个术语要快得多。
关于您的特定搜索,有一个警告。单词'in'是一个停用词,因此默认情况下它将被忽略。此外,默认情况下会忽略少于4个字符的单词。这两个索引都可以修改,但如果您尝试构建这样的索引,这将是一个警告。
https://stackoverflow.com/questions/24443135
复制相似问题