首頁 > 資料庫 > mysql教程 > 如何實作MySQL InnoDB表的類別全文檢索?

如何實作MySQL InnoDB表的類別全文檢索?

Linda Hamilton
發布: 2024-12-17 13:52:09
原創
847 人瀏覽過

How Can I Achieve Fulltext-Like Search on InnoDB Tables in MySQL?

在InnoDB 上使用類似全文的功能搜尋​​MySQL 資料

在InnoDB 表上使用「LIKE」進行字串搜尋的傳統方法受到影響由於效能限制以及需要單獨檢查每個搜尋字詞。為了增強搜尋功能,需要一個模擬 InnoDB 表全文搜尋的解決方案。

解決方案:利用單獨的 MyISAM 表進行索引

此方法涉及建立一個單獨的 MyISAM 表。 MyISAM 表是 InnoDB 表的鏡像。 MyISAM 表包含一個使用「FULLTEXT」關鍵字索引的附加資料列。透過以行資料填入此 MyISAM 表,我們有效地建立了一個支援快速、類似全文搜尋功能的索引。

實作

考慮以下範例:

1

2

3

4

5

6

7

-- InnoDB tables

CREATE TABLE users (id INT, name VARCHAR(255), PRIMARY KEY (id));

CREATE TABLE forums (id INT, name VARCHAR(255), PRIMARY KEY (id));

CREATE TABLE threads (id INT, subject VARCHAR(255), user_id INT, forum_id INT, PRIMARY KEY (id));

 

-- MyISAM fulltext table

CREATE TABLE threads_ft (id INT, subject VARCHAR(255), FULLTEXT(subject), PRIMARY KEY (id));

登入後複製

正在同步資料

正在同步資料

執行搜尋查詢

現在,您可以執行類似全文的搜尋查詢:

1

2

3

4

5

6

7

8

9

10

11

-- Stored procedure for searching

CREATE PROCEDURE ft_search_threads(IN p_search VARCHAR(255))

BEGIN

  SELECT *

  FROM threads_ft

  WHERE MATCH(subject) AGAINST (p_search IN BOOLEAN MODE)

  ORDER BY RANK() DESC;

END;

 

-- Example query

CALL ft_search_threads('keyword1 keyword2 keyword3');

登入後複製

優點

這種方法有以下優點:

  • 類似全文的搜尋功能,無需Sphinx的開銷或其他外部工具
  • 與「LIKE」相比,搜尋效能更快查詢
  • 簡化實作和維護

以上是如何實作MySQL InnoDB表的類別全文檢索?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板