国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術(shù)文章
文章詳情頁

MySQL 全文索引使用指南

瀏覽:127日期:2023-10-02 15:15:50

全文索引需要特殊的查詢語法。有沒有索引都可以進行全文檢索,但是存在索引時會提高匹配的速度。全文索引的索引通過特殊的結(jié)構(gòu)存儲以便于找到文檔中包含搜索關(guān)鍵字對應的內(nèi)容。在我們?nèi)粘I钪?,最常見的全文檢索就是網(wǎng)絡搜索引擎。雖然,網(wǎng)絡搜索引擎的數(shù)據(jù)里十分龐大,并且通常也不會使用關(guān)系型數(shù)據(jù)庫,但是原理是相似的。

全文索引支持通過基于字符(CHAR、VARCHAR 和 TEXT 類型的列)的檢索,也可以支持自然語言模式(Natural Language Mode, 默認)和布爾模式 (Boolean Mode)。例如我們搜索“數(shù)據(jù)庫引擎”的時候,內(nèi)容中包括“數(shù)據(jù)庫”、“引擎”和“數(shù)據(jù)庫引擎”的內(nèi)容都會檢索出來。全文索引的實現(xiàn)有大量的限制,而且十分復雜。但是由于內(nèi)置在MySQL服務端,而且對很多應用都能夠滿足要求,因此被廣泛使用。

在MySQL5.6之前的版本中,只有 MyISAM 存儲引擎支持全文索引。創(chuàng)建全文索引需要指定列標記為全文索引,如下面的 content 列。

CREATE TABLE t_news (id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,content TEXT,author VARCHAR(32),title VARCHAR(128), FULLTEXT (content)) ENGINE=InnoDB;

MySQL 5.6以前對中文搜索支持不是太好,需要自己進行分詞后將段落預處理拆分成單詞在入庫。MySQL5.7.6后才有了內(nèi)置的分詞器 ngram。ngram 支持設置設置分詞的長度,可以將中文按長度拆分為不同的單詞(雖然不太智能,但滿足大部分場景)??梢酝ㄟ^ MySQL 的全局變量ngram_token_size設置分詞長度,默認是2,支持1-10可選。對于上面的例子,需要指定分詞器構(gòu)建全文索引。

CREATE TABLE t_news ( id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,content TEXT,author VARCHAR(32),title VARCHAR(128), FULLTEXT KEY idx(content) WITH PARSER ngram) ENGINE=InnoDB;

插入一條數(shù)據(jù)測試。

INSERT INTO `t_news` (`id`, `content`, `author`, `title`) VALUES (’1’, ’我有一個數(shù)據(jù)庫和引擎’, ’島上碼農(nóng)’, ’數(shù)據(jù)庫引擎’);

在簡單的模糊搜索中可以使用 LIKE 來完成,而對于全文檢索需要使用如下方式的語句:

SELECT * FROM t_news WHERE MATCH (content) AGAINST (’數(shù)據(jù) 引擎’ IN NATURAL LANGUAGE MODE)

通過這種方式可以檢索出剛剛插入的內(nèi)容,而如果使用 LIKE 是沒法完成的。也支持使用相關(guān)性排序,再插入一條數(shù)據(jù):

INSERT INTO `t_news`(`id`, `content`, `author`, `title`) VALUES (2,’我有一個數(shù)據(jù)庫’,’島上碼農(nóng)’,’數(shù)據(jù)庫’)

然后執(zhí)行排序查詢:

SELECT *, MATCH (content) AGAINST (’數(shù)據(jù) 引擎’ ) AS relevanceFROM t_news WHERE MATCH (content) AGAINST (’數(shù)據(jù) 引擎’ ) ORDER BY relevance ASC

這里將匹配值作為一列查詢,以便使用其別名進行排序。相關(guān)性越高,對應的 relevance 值越大,因此可以用作排序。入股不相關(guān),那么 relevance 的值為0。

布爾模式可以做更多的控制,例如包括使用+號保留匹配結(jié)果和使用-號排除匹配結(jié)果,下面的就匹配了數(shù)據(jù),而排除了包含引擎的數(shù)據(jù)。更多操作符可以參考 MySQL 的官方文檔:全文索引操作符。

SELECT * FROM t_news WHERE MATCH (content) AGAINST (’+數(shù)據(jù)* -引擎’ IN BOOLEAN MODE);

以上就是MySQL 全文索引使用指南的詳細內(nèi)容,更多關(guān)于MySQL 全文索引的資料請關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

相關(guān)文章:
主站蜘蛛池模板: 一级做性色a爰片久久毛片免费 | 国产日韩精品一区在线不卡 | 色婷婷久久综合中文久久蜜桃 | 在线免费看a | 成人国产精品一区二区网站 | 99久久免费精品国产免费高清 | 亚洲乱人伦精品图片 | 亚洲国产爱久久全部精品 | 中文字幕精品视频 | 天天欲色成人综合网站 | 日韩中文字幕在线观看 | 亚洲九九香蕉 | 岛国大片在线播放免费 | 成人网中文字幕色 | 亚洲永久免费 | 亚洲欧美激情精品一区二区 | 亚洲国产精品第一区二区三区 | 国产91区 | 成年网站视频在线观看 | 一级做a爱片久久蜜桃 | 精品国产欧美一区二区三区成人 | 日本三级欧美三级 | 成人免费观看一区二区 | 久久久亚洲国产精品主播 | 欧美成人亚洲综合精品欧美激情 | 一级毛片国产 | 女人张开双腿让男人桶完整 | 国产一级做a爰片... | 91亚洲国产 | 亚洲欧美国产高清va在线播放 | 免费一级毛片麻豆精品 | 日韩午夜精品 | 久久凹凸 | 日本加勒比网站 | 中文 日本 免费 高清 | 九九全国免费视频 | 黄色毛片视频校园交易 | 天堂中文资源在线8 | 美女免费黄网站 | 另类亚洲孕妇分娩网址 | 美女三级黄|