[英]Selecting rows with occurences of text in any tables?
我在MySQL上使用PHP。 我有两个表:
表1-2列:ad_id,标题,内容表2-3列: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
因为此特定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中跟踪结果?
顺便说一句道歉,如果我的解释令人困惑,我发现由于某种原因很难解释。
您正在寻找的功能是全文搜索。 MySQL中的文档对此主题非常详尽。
您可以在多个列上创建全文索引,这似乎是您所需要的功能。 另外,(一般而言)它比单独搜索每个术语要快得多。
关于您的特定搜索的一个警告。 'in'
一词是停用词,因此默认情况下将被忽略。 另外,默认情况下,少于4个字符的单词将被忽略。 这两个都可以修改,但是如果您尝试建立这样的索引,这是一个警告。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.