的任何部分匹配我有一個使用檢查字符串1的任何部分字符串2
WHERE data LIKE '%keyWord%';
,但如果我用很多關鍵詞
「多關鍵詞」
什麼簡單的搜索功能我的數據包含
「的一些關鍵數據」
我想他們甚至投其所好如果一個單詞匹配(在這種情況下「鑰匙」)。 這可以在一個MySQL查詢中實現嗎?
的任何部分匹配我有一個使用檢查字符串1的任何部分字符串2
WHERE data LIKE '%keyWord%';
,但如果我用很多關鍵詞
「多關鍵詞」
什麼簡單的搜索功能我的數據包含
「的一些關鍵數據」
我想他們甚至投其所好如果一個單詞匹配(在這種情況下「鑰匙」)。 這可以在一個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";
這給出了一個查詢準備搜索表中的字符串中的每個單詞,而不僅僅是整個字符串。
只是稍作修改。它應該是$ allTags。=「或數據如'%'。$ tag。」%'「; – Vortic
除非您的表格包含幾行應該避免使用「%text%」,因爲不能使用索引。
相反,您應該考慮在列數據上添加全文索引並執行全文搜索,例如,
ALTER TABLE mytable ADD FULLTEXT(data);
SELECT col1, col2, ... FROM mytable WHERE match(data) AGAINST("word1 word2 word3" in BOOLEAN MODE);
使用'或'運營商或爆炸*(或者是說破滅?我弄混)*上的數據檢索 –
問題是因爲關鍵字,即使它包含了許多我不能用很多的OR單詞必須是單個字符串。 – Vortic
https://dev.mysql.com/doc/refman/5.5/en/fulltext-search.html – shmosel