我有一個使用MySQL編寫的PHP論壇,我想提供論壇搜索。它將允許用戶搜索特定的字符串,以及過濾元數據,如發佈日期和主題等。元數據可以被有效地搜索,因爲大多數這些字段都被編入索引,但我認爲主要的用例當然是普通的文本搜索,並且不使用可以修剪結果的元數據過濾器。高效的MySQL文本搜索
經過一些測試後,我發現與大多數人的設置相反,SQL_CALC_FOUND_ROWS比查詢兩次顯着更快(約1.5倍),以便獲得結果數量,所以我最好的查詢是:
SQL_CALC_FOUND_ROWS * from blahblah where content like '%term%' limit whatever whatever;
不出所料,這非常慢,因爲它必須與數據庫中的每個論壇帖子進行文本匹配。有什麼我可以做的改進呢?在使用LIKE
運算符時,是否會在內容(TEXT)字段中添加索引?通常如何做到這一點?
你看過全文搜索嗎? https://dev.mysql.com/doc/refman/5.5/en/fulltext-search.html#function_match – chris85