检查 string1 的任何部分是否与 string2 的任何部分匹配

Check if any part of string1 matches any part of string2

我有使用

的简单搜索功能
WHERE data LIKE '%keyWord%';

但是如果我使用很多关键词怎么办

"many key words"

我的数据包含

"some key data"

即使只有一个单词匹配,我也希望它们匹配(在本例中为 "key")。 这可以在一个 MySQL 查询中实现吗?

好的,这就是我的处理方式。

            $keyWords = $_POST["searchedWords"];
            $exploded = explode(" ",$keyWords);
            $allTags = '';
            foreach ($exploded as $tag) {
                $allTags .= " or data like '%".$tag."%'";
            }

            $query = "select something, something2 from myTable
            where data = 'ReallyHardTagThatNoOneWillGuess'$allTags";

这提供了一个查询,可以搜索 table 字符串中的每个单词,而不仅仅是整个字符串。

除非你的 table 包含几行 LIKE "%text%" 应该避免,因为没有索引可以使用。

相反,您应该考虑在列数据上添加全文索引并执行全文搜索,例如

ALTER TABLE mytable ADD FULLTEXT(data);
SELECT col1, col2, ... FROM mytable WHERE match(data) AGAINST("word1 word2 word3" in BOOLEAN MODE);