欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MySql match against工具詳細用法

 更新時間:2025年04月21日 14:38:22   作者:帥的飛起來  
在MySQL中,MATCH……AGAINST是全文索引(Full-Text index)的查詢語法,它允許你對文本進行高效的全文搜素,支持自然語言搜索和布爾搜索模式,下面給大家介紹MySql match against工具詳細用法,感興趣的朋友一起看看吧

在MySQL中,MATCH……AGAINST是全文索引(Full-Text index)的查詢語法,它允許你對文本進行高效的全文搜素,支持自然語言搜索和布爾搜索模式。以下是MATCH……AGAINST的詳細用法和示例

一、全文索引的基本概念

  • 全文索引適用于CHAR、VARCHAR和TEXT類型的列
  • 全文索引支持自然語言搜索和布爾搜索
  • 全文索引只能用于MyISAM和InnoDB存儲引擎(MySQL5.6及以上版本支持InnoDB的全文索引)

二、創(chuàng)建全文索引

在需要使用全文索引的列上創(chuàng)建全文索引

示例:

CREATE TABLE articles (
    id INT PRIMARY KEY AUTO_INCREMENT,
    title VARCHAR(255) NOT NULL,
    content TEXT NOT NULL,
    FULLTEXT (title, content)  -- 在title和content列上創(chuàng)建全文索引
);

三、自然語言搜索

自然語言搜索是全文索引的默認(rèn)模式。它會根據(jù)搜索詞的相關(guān)性返回結(jié)果

SELECT * FROM table_name 
WHERE MATCH(column1, column2, ...) AGAINST('search_term');

示例:

-- 插入數(shù)據(jù)
INSERT INTO articles (title, content) VALUES
('MySQL Tutorial', 'This is a tutorial about MySQL.'),
('Advanced MySQL', 'Learn advanced techniques in MySQL.'),
('PostgreSQL vs MySQL', 'A comparison between PostgreSQL and MySQL.');
?
-- 自然語言搜索
SELECT * FROM articles 
WHERE MATCH(title, content) AGAINST('MySQL');
  • 結(jié)果:
    • 返回包含MySQL的記錄,并按相關(guān)性排序
    • 相關(guān)性得分可以通過MATCH……AGAINST的結(jié)果獲?。?/li>
SELECT id, title, MATCH(title, content) AGAINST('MySQL') AS score 
FROM articles 
WHERE MATCH(title, content) AGAINST('MySQL');

四、布爾搜索

布爾搜素允許使用特定的操作符來精確控制搜索行為

語法:

SELECT * FROM table_name 
WHERE MATCH(column1, column2, ...) AGAINST('search_term' IN BOOLEAN MODE);

常用操作符:

  • +:必須包含該詞。
  • -:必須不包含該詞。
  • *:通配符,匹配以指定詞開頭的詞。
  • "":短語搜索,匹配完整短語。
  • ():分組操作符。

示例:

-- 必須包含MySQL,且不包含PostgreSQL
SELECT * FROM articles 
WHERE MATCH(title, content) AGAINST('+MySQL -PostgreSQL' IN BOOLEAN MODE);
?
-- 包含MySQL或PostgreSQL
SELECT * FROM articles 
WHERE MATCH(title, content) AGAINST('MySQL PostgreSQL' IN BOOLEAN MODE);
?
-- 包含以My開頭的詞
SELECT * FROM articles 
WHERE MATCH(title, content) AGAINST('My*' IN BOOLEAN MODE);
?
-- 包含完整短語"MySQL Tutorial"
SELECT * FROM articles 
WHERE MATCH(title, content) AGAINST('"MySQL Tutorial"' IN BOOLEAN MODE);

五、相關(guān)性排序

全文索引會為每條記錄計算一個相關(guān)性得分(Relevance Score),可以根據(jù)得分對結(jié)果進行排序。

示例:

SELECT id, title, MATCH(title, content) AGAINST('MySQL') AS score 
FROM articles 
WHERE MATCH(title, content) AGAINST('MySQL') 
ORDER BY score DESC;

六、全文索引的限制

  • 最小詞長度:默認(rèn)情況下,MySQL全文索引會忽略長度小于4的詞。可以通過修改ft_min_word_len(MyISAM)或innodb_ft_min_token_size(InnoDB)參數(shù)調(diào)整
  • 停用詞:全文索引會忽略常見的停用詞(如the、and等)??梢酝ㄟ^修改ft_stopword_file參數(shù)自定義停用詞列表。
  • 中文支持:MySQL的全文索引對中文支持較差,通常需要配合分詞工具(如ngram)使用。

七、 配置全文索引

修改最小詞長度:

-- 查看當(dāng)前配置
SHOW VARIABLES LIKE 'innodb_ft_min_token_size';
?
-- 修改配置(需要重啟MySQL)
SET GLOBAL innodb_ft_min_token_size = 2;

使用ngram分詞器(支持中文):

-- 創(chuàng)建表時指定ngram分詞器
CREATE TABLE articles (
    id INT PRIMARY KEY AUTO_INCREMENT,
    title VARCHAR(255) NOT NULL,
    content TEXT NOT NULL,
    FULLTEXT (title, content) WITH PARSER ngram
);
?
-- 查詢時使用ngram分詞器
SELECT * FROM articles 
WHERE MATCH(title, content) AGAINST('關(guān)鍵詞' IN BOOLEAN MODE);

八、 刪除全文索引

如果需要刪除全文索引,可以使用以下語法:

ALTER TABLE table_name DROP INDEX index_name;

示例:

ALTER TABLE articles DROP INDEX title;

九. 全文索引的性能優(yōu)化

  • 索引列選擇:只為需要搜索的列創(chuàng)建全文索引,避免不必要的索引開銷。
  • 分詞器選擇:對于中文搜索,使用ngram分詞器。
  • 緩存結(jié)果:對于高頻查詢,可以將結(jié)果緩存到Redis等緩存系統(tǒng)中。

到此這篇關(guān)于MySql match against工具詳細用法的文章就介紹到這了,更多相關(guān)mysql match against工具內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Mysql教程分組排名實現(xiàn)示例詳解

    Mysql教程分組排名實現(xiàn)示例詳解

    這篇文章主要為大家介紹了Mysql數(shù)據(jù)庫分組排名實現(xiàn)的示例詳解教程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步
    2021-10-10
  • mysql decimal類型判斷是否為0

    mysql decimal類型判斷是否為0

    在MySQL中,DECIMAL是一種用于存儲精確小數(shù)的數(shù)據(jù)類型,本文主要介紹了mysql decimal類型判斷是否為0,具有一定的參考價值,感興趣的可以了解一下
    2024-02-02
  • 數(shù)據(jù)庫Sql實現(xiàn)截取時間段和日期實例(SQL時間截取)

    數(shù)據(jù)庫Sql實現(xiàn)截取時間段和日期實例(SQL時間截取)

    在許多情況下你也許只想得到日期和時間的一部分,而不是完整的日期和時間,下面這篇文章主要給大家介紹了關(guān)于數(shù)據(jù)庫Sql實現(xiàn)截取時間段和日期(SQL時間截取)的相關(guān)資料,需要的朋友可以參考下
    2023-05-05
  • MySQL聯(lián)表查詢基本操作之left-join常見的坑

    MySQL聯(lián)表查詢基本操作之left-join常見的坑

    這篇文章主要給大家介紹了關(guān)于MySQL聯(lián)表查詢基本操作之left-join的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家學(xué)習(xí)或者使用MySQL具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • mysql 的replace into實例詳解

    mysql 的replace into實例詳解

    這篇文章主要介紹了mysql 的replace into實例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • MySQL中查詢當(dāng)前時間間隔前1天的數(shù)據(jù)

    MySQL中查詢當(dāng)前時間間隔前1天的數(shù)據(jù)

    實際項目中我們都會遇到分布式定時任務(wù)執(zhí)行的情況,今天通過本文給大家分享MySQL中查詢當(dāng)前時間間隔前1天的數(shù)據(jù),查詢sql語句給大家介紹的非常詳細,感興趣的朋友跟隨小編一起看看吧<BR>
    2021-12-12
  • MySQL讀寫分離原理詳細解析

    MySQL讀寫分離原理詳細解析

    這篇文章主要介紹了MySQL讀寫分離原理詳細解析,讀寫分離是基于主從復(fù)制來實現(xiàn)的,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-07-07
  • MySQL數(shù)據(jù)庫InnoDB數(shù)據(jù)恢復(fù)工具的使用小結(jié)詳解

    MySQL數(shù)據(jù)庫InnoDB數(shù)據(jù)恢復(fù)工具的使用小結(jié)詳解

    本篇文章是對MySQL數(shù)據(jù)庫InnoDB數(shù)據(jù)恢復(fù)工具的使用進行了詳細的總結(jié)與分析,需要的朋友參考下
    2013-06-06
  • 詳解MySQL如何選擇合適的索引

    詳解MySQL如何選擇合適的索引

    選擇合適的索引是數(shù)據(jù)庫優(yōu)化中非常重要的一步,正確的索引可以大幅提高查詢性能,減少數(shù)據(jù)庫響應(yīng)時間;而不當(dāng)?shù)乃饕x擇則可能增加存儲開銷,影響數(shù)據(jù)庫性能,甚至使得某些操作變得更加緩慢,以下是選擇合適索引的一些指導(dǎo)原則和策略,需要的朋友可以參考下
    2024-12-12
  • mysql不是內(nèi)部命令的錯誤解決方案

    mysql不是內(nèi)部命令的錯誤解決方案

    在本篇內(nèi)容里小編給各位分享的是一篇關(guān)于mysql不是內(nèi)部命令的錯誤解決方案,需要的朋友們可以學(xué)習(xí)下。
    2020-08-08

最新評論