亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

目錄
2. Create a Full-Text Index on Text Columns
Example Table:
3. Use MATCH() ... AGAINST() for Search Queries
Natural Language Search (default mode):
Boolean Mode (for advanced control):
Query Expansion (for broader results):
4. Optimize Performance and Considerations
首頁 資料庫 mysql教程 如何在MySQL中的InnoDB表上實現(xiàn)全文搜索?

如何在MySQL中的InnoDB表上實現(xiàn)全文搜索?

Aug 03, 2025 pm 12:08 PM
innodb 全文搜尋

確保使用MySQL 5.6或更高版本並檢查FTS相關配置;2. 在InnoDB表的文本列上創(chuàng)建FULLTEXT索引;3. 使用MATCH()...AGAINST()語法執(zhí)行自然語言、布爾或查詢擴展模式搜索;4. 根據(jù)需要調整最小詞長、停用詞表和緩存設置以優(yōu)化性能;5. 注意InnoDB全文搜索對大文本字段、相關性評分精度和復雜搜索需求的限制,但對大多數(shù)Web應用已足夠。

How to implement full-text search on InnoDB tables in MySQL?

MySQL's InnoDB storage engine supports full-text search (FTS) starting from version 5.6, making it possible to perform efficient text-based queries directly within InnoDB tables—no need to switch to MyISAM anymore. Here's how to implement full-text search on InnoDB tables properly.

How to implement full-text search on InnoDB tables in MySQL?

1. Ensure MySQL Version and Configuration

First, confirm you're using MySQL 5.6 or higher , as full-text search for InnoDB was introduced in that version.

Also, check your innodb_ft_aux_table and other FTS-related system variables if you're debugging or tuning performance:

How to implement full-text search on InnoDB tables in MySQL?
 SHOW VARIABLES LIKE 'innodb_ft_%';

By default, most settings are fine for basic use, but for large text datasets, you may want to adjust settings like innodb_ft_cache_size or innodb_ft_total_cache_size .


2. Create a Full-Text Index on Text Columns

You can create a FULLTEXT index on one or more CHAR , VARCHAR , or TEXT columns.

How to implement full-text search on InnoDB tables in MySQL?

Example Table:

 CREATE TABLE articles (
    id INT PRIMARY KEY AUTO_INCREMENT,
    title VARCHAR(255),
    body TEXT,
    FULLTEXT (title, body)
);

Or add a FULLTEXT index to an existing table:

 ALTER TABLE articles ADD FULLTEXT (title, body);

You can also create a full-text index on a single column:

 CREATE FULLTEXT INDEX idx_ft_title ON articles(title);

Note: The table must use the InnoDB engine, and the default collation should be compatible (usually utf8mb4 works fine).


3. Use MATCH() ... AGAINST() for Search Queries

Once the FULLTEXT index is in place, use the MATCH() ... AGAINST() syntax to run full-text searches.

Natural Language Search (default mode):

 SELECT *, MATCH(title, body) AGAINST('database optimization') AS score
FROM articles
WHERE MATCH(title, body) AGAINST('database optimization');

This returns rows with relevance scores. Results are ordered by relevance by default if you use the score in ORDER BY .

Boolean Mode (for advanced control):

Use IN BOOLEAN MODE for operators like , - , * , "..." .

 SELECT * FROM articles
WHERE MATCH(title, body) AGAINST(' database -mysql' IN BOOLEAN MODE);
  • means the word must be present
  • - means the word must not be present
  • Use quotes for exact phrases: "query optimization"

Query Expansion (for broader results):

 SELECT * FROM articles
WHERE MATCH(title, body) AGAINST('optimization' WITH QUERY EXPANSION);

Helps include related terms based on the initial result set.


4. Optimize Performance and Considerations

  • Minimum Word Length : By default, InnoDB ignores words shorter than 3 characters (controlled by innodb_ft_min_token_size ). If you need to search short words (like "AI" or "C#"), change this value in my.cnf and rebuild the index.

  • Stopword List : InnoDB uses a stopword list (eg, "the", "and"). You can disable it or customize it:

     SET GLOBAL innodb_ft_server_stopword_table = 'mydb/my_stopwords';
  • Index Maintenance : Full-text indexes are updated with DML operations, but large changes may benefit from optimization:

     OPTIMIZE TABLE articles;
  • Rebuilding Index : If you change FTS settings (like token size), you may need to drop and recreate the FULLTEXT index.


  • 5. Limitations to Keep in Mind

    • Full-text search in InnoDB doesn't support indexing TEXT columns with very large content (> 768 bytes per column in some cases, though this is managed internally via auxiliary tables).
    • Relevance scores are relative and not as fine-tuned as dedicated search engines (eg, Elasticsearch).
    • Not ideal for huge datasets or complex search needs (fuzzy matching, typo tolerance, etc.).

    For most web applications—blogs, documentation, product catalogs—InnoDB full-text search is sufficient and avoids adding external dependencies. Just make sure your indexes are set up correctly and your search queries use the right mode.

    Basically, enable the index, use MATCH() ... AGAINST() , and tune settings if needed.

    以上是如何在MySQL中的InnoDB表上實現(xiàn)全文搜索?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發(fā)現(xiàn)涉嫌抄襲或侵權的內容,請聯(lián)絡admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Laravel 教程
1597
29
PHP教程
1488
72
如何使用php擴展Sphinx進行全文搜索 如何使用php擴展Sphinx進行全文搜索 Jul 29, 2023 am 10:05 AM

如何使用PHP擴充Sphinx進行全文搜尋全文搜尋是現(xiàn)代Web應用程式中的常見需求之一。為了滿足使用者對資料的高效查詢和檢索,我們可以使用Sphinx這個功能強大的開源搜尋引擎來實現(xiàn)全文搜尋功能。 Sphinx使用C++編寫,提供了PHP的擴展,方便我們在PHP專案中使用。本文將介紹如何使用PHP擴充Sphinx進行全文搜索

mysql innodb是什麼 mysql innodb是什麼 Apr 14, 2023 am 10:19 AM

InnoDB是MySQL的資料庫引擎之一,現(xiàn)在是MySQL的預設儲存引擎,為MySQL AB發(fā)布binary的標準之一;InnoDB採用雙軌制授權,一個是GPL授權,另一個是專有軟體授權。 InnoDB是事務型資料庫的首選引擎,支援事務安全表(ACID);InnoDB支援行級鎖,行級鎖可以最大程度的支援並發(fā),行級鎖是由儲存引擎層實現(xiàn)的。

如何使用 PHP 實作全文搜尋和關鍵字擷取功能 如何使用 PHP 實作全文搜尋和關鍵字擷取功能 Sep 05, 2023 pm 02:00 PM

如何使用PHP實現(xiàn)全文搜尋和關鍵字提取功能全文搜尋和關鍵字提取是現(xiàn)代網站和應用程式中常見的功能,可以為用戶提供更好的搜尋體驗和相關推薦。在PHP中,我們可以使用全文索引和關鍵字擷取的技術來實現(xiàn)這些功能。本文將介紹如何使用PHP實作全文搜尋和關鍵字擷取功能,並提供對應的程式碼範例。全文搜尋功能的實作全文搜尋是指在文字內容中搜尋包含指定關鍵字的記錄。在

如何使用MongoDB實現(xiàn)資料的全文搜尋功能 如何使用MongoDB實現(xiàn)資料的全文搜尋功能 Sep 19, 2023 pm 05:48 PM

如何使用MongoDB實現(xiàn)資料的全文搜尋功能導語:隨著資訊化時代的快速發(fā)展,全文搜尋功能成為了許多應用程式的必備功能。作為一個流行的NoSQL資料庫,MongoDB也提供了強大的全文搜尋能力。本文將介紹如何使用MongoDB實作資料的全文搜尋功能,並提供相關的程式碼範例。一、MongoDB全文搜尋功能簡介MongoDB的全文搜尋功能是透過MongoDB的文字索

PHP如何實現(xiàn)全文搜尋功能,提供方便的資訊查找 PHP如何實現(xiàn)全文搜尋功能,提供方便的資訊查找 Jun 27, 2023 am 09:04 AM

在現(xiàn)代網頁應用程式開發(fā)中,全文搜尋功能已經成為了不可或缺的一部分。而PHP作為一個廣泛應用於開發(fā)Web應用的語言,也自然而然地提供了一些功能強大的函式庫來支援全文搜尋。在這篇文章中,我們將深入探討如何使用PHP實現(xiàn)全文搜尋功能,並且提供一些小技巧,讓你的資訊尋找更加便捷。一、什麼是全文搜尋?全文搜尋是指在一篇文件中檢索某個關鍵字或片語的能力。傳統(tǒng)的搜尋引擎通常只是簡

MySQL儲存引擎選用比較:InnoDB、MyISAM與Memory效能指標評估 MySQL儲存引擎選用比較:InnoDB、MyISAM與Memory效能指標評估 Jul 26, 2023 am 11:25 AM

MySQL儲存引擎選用比較:InnoDB、MyISAM與Memory效能指標評估引言:在MySQL資料庫中,儲存引擎的選擇對於系統(tǒng)效能和資料完整性起著至關重要的作用。 MySQL提供了多種儲存引擎,其中最常用的引擎包括InnoDB、MyISAM和Memory。本文將就這三種儲存引擎進行效能指標評估,並透過程式碼範例進行比較。一、InnoDB引擎InnoDB是My

如何使用PHP和SQLite進行全文搜尋和索引策略 如何使用PHP和SQLite進行全文搜尋和索引策略 Jul 29, 2023 pm 08:45 PM

如何使用PHP和SQLite進行全文搜尋和索引策略引言:在現(xiàn)代的應用程式開發(fā)中,全文搜尋功能在許多領域中都是不可或缺的。無論是在部落格、新聞網站還是在電子商務平臺上,用戶都習慣使用關鍵字進行搜尋。因此,為了提高使用者體驗並提供更好的搜尋結果,我們需要使用適當?shù)乃褜ず退饕呗詠硖峁┤乃褜すδ?。在本文中,我們將探討如何使用PHP和SQLite資料庫來實現(xiàn)全文搜尋和

MySQL如何從二進位內容看InnoDB行格式 MySQL如何從二進位內容看InnoDB行格式 Jun 03, 2023 am 09:55 AM

InnoDB是將表中的資料儲存到磁碟上的儲存引擎,所以即使關機後重新啟動我們的資料還是存在的。而真正處理資料的過程是發(fā)生在記憶體中的,所以需要把磁碟中的資料載入到記憶體中,如果是處理寫入或修改請求的話,還需要把記憶體中的內容刷新到磁碟上。而我們知道讀寫磁碟的速度非常慢,和記憶體讀寫差了幾個數(shù)量級,所以當我們想從表中獲取某些記錄時,InnoDB儲存引擎需要一條一條的把記錄從磁碟上讀出來麼? InnoDB採取的方式是:將資料分割成若干個頁,以頁作為磁碟和記憶體之間互動的基本單位,InnoDB中頁的大小一般為16

See all articles