繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM