检查 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);
我有使用
的简单搜索功能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);