mysql Concat 与 OR

Pep*_*epe 6 mysql concat multiple-columns

我试图找到搜索多个列中出现的单词的最佳方法。当然,一个选项是OR在查询中添加多个's:

SELECT * FROM table WHERE column1 LIKE %term1% OR column2 LIKE %term1% OR......
Run Code Online (Sandbox Code Playgroud)

然而我虽然这使查询很长,特别是当有多个术语时

在我的搜索中,我遇到了CONCATMYSQL 中的函数。这似乎允许我在连接列后进行一次搜索(对吗?):

SELECT * FROM table WHERE CONCAT(column1,column2,....) LIKE %term1% OR CONCAT(column 1,column2,...) LIKE %term2% ....
Run Code Online (Sandbox Code Playgroud)

这具有更易于阅读和维护的优点

因为我还不了解完整的使用方法CONCAT我不知道或者这是一个正确的使用方法。我想知道实现此搜索的正确和最有效的方法是什么。(注意:我还计划按照这个 stackoverflow 问题中的说明对其进行排序:mysql SORT BY amount of unique word matching ,可能在使用这种方法时会出现问题吗?)

编辑:

Maby 解释一下我的最终愿望会更容易:在 php 中,我有一组单词。我希望从我的数据库中选择所有行,其中 1 个单词出现在多个列之一中,然后按相关性对它们进行排序(甚至为某些列增加额外的重要性)。(注意只有几千(少于 5000)行要搜索)

Tat*_*ata 0

最好的方法是使用全文搜索引擎来完成该任务,或者使用 MySQL 的全文功能。

您可以在这里找到更多解释: fulltext-natural-language