如何從MySQL表(Innodb)檢索記錄,並根據記錄的兩列可能包含多少個子字符串排序結果。根據匹配的數量搜索MySQL文本列並根據匹配的數量排序
我正在搜索包含在兩個不同列中的文本正文中的單詞。所以這個詞可能存在,它可能在前面或後面有未知的文本。
目前我的PHP代碼創建了一個查詢,該查詢使用不同數量的不同子字符串搜索兩列(包含文本)。
見簡單的例子:
$string = "";
foreach $array_of_words as $word) {
$string = $string . " column_one LIKE '% $word%' OR column_two LIKE '% $word%' OR ";
}
$string = substr ($string, 0, - 3);
$query = "SELECT * FROM tbl_maintable WHERE (" . $string . ") LIMIT 5";
這工作得相當好,即使它不完全是我想什麼,但是與上面的代碼最大的問題是,它是資源密集型(7秒即可完成查詢對一個100k的數據庫)。
我已經看了一下自然語言搜索(在某種程度上),但是文檔並沒有給出我可以使用的明確的權威方法,以及MySQL服務器的MYSQL版本(5.5.44)問題沒有InnoDB的選項。不過,如果這是唯一的選擇,我會升級。
你試過全文搜索查詢? – AnkiiG
您是否嘗試過使用:'AND MATCH(columnName)AGAINST('textString'IN BOOLEAN MODE)> 0'替換'columnName'和'textString'.. – MaggsWeb
我試過全文搜索,但該選項僅適用於InnoDB 5.6及以上。 –