【MySQL精通之路】全文搜索(9)-全文解析器-MeCab

主博客:

【MySQL精通之路】全文搜索功能-CSDN博客


目錄

1.介紹

2.安裝MeCab Parser插件

3.創建使用MeCab分析器的FULLTEXT索引

4.MeCab Parser空間處理

5.MeCab分析程序停止字處理

6.MeCab Parser術語搜索

7.MeCab分析程序通配符搜索

8.MeCab語法分析器短語搜索

9.從二進制分布安裝MeCab(可選)

10.從源安裝MeCab(可選)


1.介紹

內置的MySQL全文解析器使用單詞之間的空白作為分隔符來確定單詞的開始和結束位置,這在使用不使用單詞分隔符的表意語言時是一個限制。為了解決這一限制,MySQL提供了一個MeCab全文解析器插件。支持MeCab全文解析器插件InnoDBMyISAM一起使用。

MySQL還提供了一個支持中文日語朝鮮語(CJK)的ngram全文解析器插件。有關更多信息,請參閱“ngram全文分析器”。

【MySQL精通之路】全文解析器-ngram-CSDN博客

MeCab全文解析器插件是一個用于日語的全文解析器插件,它將文本序列標記為有意義的單詞。例如,MeCab標記化“データベース管理” (“數據庫管理”)到“データベース” (“數據庫”)和“管理” 經營相比之下,ngram全文解析器將文本標記為n個字符的連續序列,其中n表示1到10之間的數字。

除了將文本標記為有意義的單詞外,MeCab索引通常小于ngram索引,并且MeCab全文搜索通常更快。一個缺點是,與ngram全文解析器相比,MeCab全文解析器可能需要更長的時間來標記文檔。
第14.9節“全文搜索函數”中描述的全文搜索語法適用于MeCab解析器插件。本節將介紹解析行為的差異。與全文相關的配置選項也適用。
有關MeCab解析器的更多信息,請參閱Github上的MeCab:另一個詞性和形態分析器項目。

2.安裝MeCab Parser插件

MeCab解析器插件需要MeCab和MeCab ipadic。

在受支持的Fedora、Debian和Ubuntu平臺上(除了Ubuntu 12.04,其中系統mecab版本太舊),如果安裝到默認位置,MySQL會動態鏈接到系統mecab安裝。

在其他支持的類Unix平臺上,libmecab.so靜態鏈接在libpluginmecab.so中,后者位于MySQL插件目錄中。

mecab ipadic包含在MySQL二進制文件中,位于MySQL_HOME\lib\mecab中。

您可以使用本地包管理實用程序(在Fedora、Debian和Ubuntu上)安裝mecab和mecab ipadic,也可以從源代碼構建mecab或mecab ipadic。

有關使用本機軟件包管理實用程序安裝mecab和mecab ipadic的信息,請參閱9節二進制分發安裝mecab(可選)。

如果要從源代碼構建mecab和mecab ipadic,請參閱10節源代碼創建mecab(可選)。

在Windows上,libmecab.dll位于MySQL bin目錄中。mecab ipadic位于MYSQL_HOME/lib/mecab中。


要安裝和配置MeCab解析器插件,請執行以下步驟:

1.在MySQL配置文件中,將mecab_rc_file配置選項設置為mecabrc配置文件的位置,該文件是mecab的配置文件。如果您使用的是與MySQL一起分發的MeCab包,則mecabrc文件位于MySQL_HOME/lib/MeCab/etc/中。

[mysqld]
loose-mecab-rc-file=MYSQL_HOME/lib/mecab/etc/mecabrc

松散前綴是一個選項修飾符。在安裝mecab解析器插件之前,MySQL不會識別mecab_rc_file選項,但在嘗試安裝mecab解析器插件之前必須設置該選項。松散前綴允許您重新啟動MySQL,而不會遇到由于無法識別的變量而導致的錯誤。

如果您使用自己的MeCab安裝,或從源代碼構建MeCab,則mecabrc配置文件的位置可能會有所不同。

有關MySQL配置文件及其位置的信息,請參閱“使用配置文件”。

2.同樣在MySQL配置文件中,將最小令牌大小設置為1或2,這是建議與MeCab解析器一起使用的值。對于InnoDB表,最小令牌大小由InnoDB_ft_min_token_size配置選項定義,默認值為3。對于MyISAM表,最小令牌大小由ft_min_word_len定義,其默認值為4。

[mysqld]
innodb_ft_min_token_size=1

3.修改mecabrc配置文件以指定要使用的詞典。與MySQL二進制文件一起分發的mecab ipadic包包括三個字典(ipadic_euc-jp、ipadic_sjis和ipadic_utf-8)。MySQL打包的mecabrc配置文件包含和條目類似于以下內容:

dicdir =  /path/to/mysql/lib/mecab/lib/mecab/dic/ipadic_euc-jp

?例如,要使用ipadic_utf-8字典,請按如下方式修改條目:

dicdir=MYSQL_HOME/lib/mecab/dic/ipadic_utf-8

如果您使用自己的MeCab安裝,或者從源代碼構建了MeCab,則mecabrc文件中的默認dicdir條目可能會有所不同,字典及其位置也會有所不同。

注意:

安裝MeCab解析器插件后,可以使用MeCab_charset狀態變量查看MeCab使用的字符集。MySQL二進制文件提供的三個MeCab字典支持以下字符集。

ipadic_euc-jp字典支持uji和eucjpms字符集。

ipadic_sjis字典支持sjis和cp932字符集。

ipadic_utf-8字典支持utf8mb3和utf8mb4字符集。

mecab_charset只報告第一個支持的字符集。例如,ipadic_utf-8字典同時支持utf8mb3和utf8mb4。當使用此詞典時,mecab_charset總是報告utf8。

4. 重啟MySQL.

5.安裝MeCab解析器插件:

MeCab解析器插件是使用INSTALL plugin安裝的。插件名稱為mecab,共享庫名稱為libpluginmecb.so。有關安裝插件的更多信息,請參閱“安裝和卸載插件”。

INSTALL PLUGIN mecab SONAME 'libpluginmecab.so';

?一旦安裝,MeCab解析器插件會在每次正常的MySQL重啟時加載。

驗證是否使用SHOW PLUGINS語句加載了MeCab解析器插件。

mysql> SHOW PLUGINS;

mecab插件應該出現在插件列表中。


3.創建使用MeCab分析器的FULLTEXT索引

要創建使用mecab語法分析器的FULLTEXT索引,請使用create TABLE、ALTER TABLE或create index指定WITH parser ngram。

此示例演示如何創建具有mecab FULLTEXT索引的表,插入示例數據,以及查看Information Schema INNODB_FT_INDEX_CACHE表中的標記化數據:

mysql> USE test;mysql> CREATE TABLE articles (id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,title VARCHAR(200),body TEXT,FULLTEXT (title,body) WITH PARSER mecab) ENGINE=InnoDB CHARACTER SET utf8mb4;mysql> SET NAMES utf8mb4;mysql> INSERT INTO articles (title,body) VALUES('データベース管理','このチュートリアルでは、私はどのようにデータベースを管理する方法を紹介します'),('データベースアプリケーション開発','データベースアプリケーションを開発することを學ぶ');mysql> SET GLOBAL innodb_ft_aux_table="test/articles";mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_INDEX_CACHE ORDER BY doc_id, position;

若要向現有表添加FULLTEXT索引,可以使用ALTER TABLE或CREATE INDEX。例如

CREATE TABLE articles (id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,title VARCHAR(200),body TEXT) ENGINE=InnoDB CHARACTER SET utf8mb4;ALTER TABLE articles ADD FULLTEXT INDEX ft_index (title,body) WITH PARSER mecab;# Or:CREATE FULLTEXT INDEX ft_index ON articles (title,body) WITH PARSER mecab;

4.MeCab Parser空間處理

MeCab解析器在查詢字符串中使用空格作為分隔符。例如,MeCab解析器標記化

データベース管理 as データベース and 管理.

5.MeCab分析程序停止字處理

默認情況下,MeCab解析器使用默認的停止語列表,其中包含英文停止語的短列表。對于適用于日語的停止語列表,您必須創建自己的列表。有關創建停止語列表的信息,請參閱“全文停止語”。

6.MeCab Parser術語搜索

對于自然語言模式的搜索,搜索詞被轉換為標記的并集。例如データベース管理 轉換為データベース 管理.

SELECT COUNT(*) FROM articles WHERE MATCH(title,body) AGAINST('データベース管理' IN NATURAL LANGUAGE MODE);

?對于布爾模式搜索,搜索詞將轉換為搜索短語。例如データベース管理 轉換為データベース 管理.

SELECT COUNT(*) FROM articles WHERE MATCH(title,body) AGAINST('データベース管理' IN BOOLEAN MODE);

7.MeCab分析程序通配符搜索

通配符搜索項未標記化。上的搜索データベース管理* 對前綴執行,データベース管理.

SELECT COUNT(*) FROM articles WHERE MATCH(title,body) AGAINST('データベース*' IN BOOLEAN MODE);

8.MeCab語法分析器短語搜索

短語被標記。例如データベース管理 標記為データベース 管理.

SELECT COUNT(*) FROM articles WHERE MATCH(title,body) AGAINST('"データベース管理"' IN BOOLEAN MODE);

9.從二進制分布安裝MeCab(可選)

本節介紹如何使用本機包管理實用程序從二進制發行版安裝mecab和mecab ipadic。例如,在Fedora上,您可以使用Yum執行安裝:

yum mecab-devel

在Debian或Ubuntu上,您可以執行APT安裝:

apt-get install mecab
apt-get install mecab-ipadic

10.從源安裝MeCab(可選)

如果你想從源代碼構建mecab和mecab ipadic,下面提供了基本的安裝步驟。有關更多信息,請參閱MeCab文檔。

1.從下載適用于mecab和mecab ipadic的tar.gz軟件包http://taku910.github.io/mecab/#download.截至2016年2月,最新的可用軟件包為mecab-0.996.tar.gz和mecab-ipadic-2.7.0-20070801.tar.gz。

2.安裝mecab:

tar zxfv mecab-0.996.tar
cd mecab-0.996
./configure
make
make check
su
make install

3.安裝mecab ipadic:

tar zxfv mecab-ipadic-2.7.0-20070801.tar
cd mecab-ipadic-2.7.0-20070801
./configure
make
su
make install

4.使用WITH_MECAB CMake選項編譯MySQL。如果您已將MECAB和MECAB ipadic安裝到默認位置,請將WITH_MECAB選項設置為system。

-DWITH_MECAB=system

?如果定義了自定義安裝目錄,請將WITH_MECAB設置為自定義目錄。例如

-DWITH_MECAB=/path/to/mecab

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/17316.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/17316.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/17316.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

echarts學習篇

一、使用echarts 1.引入 Apache ECharts <!DOCTYPE html> <html> <head> <meta charset"utf-8" /> <!-- 引入剛剛下載的 ECharts 文件 --> <script src"echarts.js"></script> </head> </html> 2.…

深度神經網絡——什么是自動編碼器?

自動編碼器 自動編碼器&#xff08;Autoencoders&#xff09;是無監督學習領域中一種重要的神經網絡架構&#xff0c;它們主要用于數據壓縮和特征學習。 自動編碼器的定義&#xff1a; 自動編碼器是一種無監督機器學習算法&#xff0c;它通過反向傳播進行訓練&#xff0c;目標…

【夏之以寒-Kafka專欄 02】什么情況下會發生 QueueFullException?

作者名稱&#xff1a;夏之以寒 作者簡介&#xff1a;專注于Java和大數據領域&#xff0c;致力于探索技術的邊界&#xff0c;分享前沿的實踐和洞見 文章專欄&#xff1a;夏之以寒-kafka專欄 專欄介紹&#xff1a;本專欄旨在以淺顯易懂的方式介紹Kafka的基本概念、核心組件和使用…

2023山東ICPC省賽Problem B.建筑公司(拓撲排序)

2023 山東 I C P C 省賽 P r o b l e m B . 建筑公司 \Huge{2023山東ICPC省賽Problem B.建筑公司} 2023山東ICPC省賽ProblemB.建筑公司 文章目錄 題意思路標程 比賽鏈接&#xff1a;Dashboard - The 13th Shandong ICPC Provincial Collegiate Programming Contest - Codeforce…

OWASP top10--SQL注入(三、手工注入)

目錄 access數據庫 手工注入過程&#xff1a; 猜解數據庫表名 猜解數據庫表名里面的字段 猜解字段內容 SQL注入中的高級查詢 mssql數據庫 手工注入過程&#xff1a; sa權限 ?編輯dbowner權限 public權限 mysql數據庫 1、對服務器文件進行讀寫操作(前提條件) 需要知…

文刻創作ai工具官網免費工具

文刻創作ai工具官網免費工具 Docshttps://iimenvrieak.feishu.cn/docx/O0UedptjbonN4UxyEy7cPlZknYc 文刻是一種可以幫助用戶進行創作的AI工具。 它使用自然語言處理和機器學習技術&#xff0c;可以生成文章、故事、詩歌等文本內容。 用戶可以通過輸入一些關鍵詞或指定一定的…

浙江大學數據結構MOOC-課后習題-第七講-圖4 哈利·波特的考試

題目匯總 浙江大學數據結構MOOC-課后習題-拼題A-代碼分享-2024 題目描述 代碼展示 照著教程視頻來的&#xff0c;沒啥好說的捏 #include <cstdlib> #include <iostream>#define MAXSIZE 100 #define IFINITY 65535 typedef int vertex; typedef int weightType;/…

為什么大部分新手做抖音小店賺不到錢?

大家好&#xff0c;我是噴火龍。 今天來給大家聊聊&#xff0c;為什么大部分新手做抖店賺不到錢&#xff1f; 不知道大家想過這個問題沒有&#xff0c;可能有些人把賺不到錢的原因歸結于市場、或者平臺、又或者運營技術以及做店經驗。 但我覺得這些都不是重點&#xff0c;重…

FFmpeg 使用文檔介紹二:命令行選項

關于FFmpeg的細節描述可以參考:FFmpeg 使用文檔介紹一:細節描述和流選擇 命令行選項 所有數值選項,除非另有說明,都接受一個表示數字的字符串作為輸入,該字符串后面可以跟一個國際單位制(SI)的單位前綴,例如:‘K’(千)、‘M’(兆)或’G’(吉)。 如果將i附加到S…

爬蟲實戰教程:深入解析配樂網站爬取1000首MP3

新書上架~&#x1f447;全國包郵奧~ python實用小工具開發教程http://pythontoolsteach.com/3 歡迎關注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目錄 一、引言 二、實戰前準備 1. 選擇目標網站 2. 分析網頁結構 三、爬蟲工作流程詳解 1. 發…

高質量軟件開發的全面指南(MIT-6.031)

首先&#xff0c;通過靜態檢查&#xff08;Static Checking&#xff09;和動態檢查&#xff08;Dynamic Checking&#xff09;了解類型和變量的使用規則&#xff0c;學習如何編寫文檔和注釋來記錄假設和方法&#xff08;Assumptions and Methods&#xff09;。詳細內容請見&…

Curator Framework如何寫單元測試

概述 使用curator framework框架去操作zookeeper時&#xff0c;我們知道因其的方法風格是那種流式的編寫風格&#xff0c;所以我們在寫單元測試的時候要把鏈接zookeeper的操作給mock掉&#xff0c;那么著實是不太好寫單測。不過好在curator framework有一個專門用于測試的模塊…

誠心分享!主食凍干橫向對比:希喂、愛立方、K9等誰最值得入手?

主食凍干到底有必要喂嗎&#xff1f;七年鏟齡鏟屎官告訴你&#xff0c;是真的很有必要喂&#xff01; 這些年隨著寵物經濟的發展、科學養寵的普及&#xff0c;現在養貓不僅局限在讓貓吃飽就行&#xff0c;更多人開始關注到貓的飲食健康。大量的實際喂養案例證明了&#xff0c;傳…

第2章 物理層

王道學習 考綱內容 &#xff08;一&#xff09;通信基礎 信道、信號、帶寬、碼元、波特、速率、信源與信宿等基本概念&#xff1b; 奈奎斯特定理與香農定理&#xff1b;編碼與調制&#xff1b; 電路交換、報文交換與分組交換&#xff1b;數…

接口響應斷言-json

json認識JSONPath源碼類學習/json串的解析拓展學習 目的&#xff1a;數據返回值校驗測試 json認識 json是什么-是一種數據交換格式&#xff0c;舉例平時看到的json圖2&#xff0c;在使用中查看不方便&#xff0c;會有格式轉化的平臺&#xff0c;json格式的展示 JSON在線視圖…

推薦二輪電動車儀表盤藍牙主芯片方案-HS6621CGC

隨著國內二輪電動車的火熱開啟&#xff0c;電動車的智能化程度越來越高&#xff1b;電動車的智能操控需求也越來越高&#xff0c;現在介紹藍牙控制面板的一些功能&#xff1b;例如&#xff1a;定位&#xff08;GNSS&#xff09;&#xff0c;設防&#xff0c;實時上報數據&#…

rocketmq跨版本升級方案參考—— 筑夢之路

這篇文章寫的比較好&#xff0c;可以作為參考&#xff0c;抽空再來按照這個思路進行實踐實驗。 https://www.cnblogs.com/zhyg/p/10132598.html 對于rocketmq和kafka如何選擇&#xff0c;可閱讀搭建項目 Kafka 和 RocketMQ 你選哪個&#xff1f;

什么是光柵化?

一、 什么是光柵化? 光柵化作用是將幾何數據變換后轉換為像素呈現在顯示設備上的一個過程。幾何數據轉換為像素&#xff0c; 本質是坐標變換、幾何離散化&#xff0c;如下&#xff1a; 其中包含了坐標變換和幾何離散化&#xff1a; 二、光柵化完成了什么 3D中&#xff0c;物…

element-ui 實現輸入框下拉樹組件(2024-05-23)

用element-ui的 el-input&#xff0c;el-tree&#xff0c;el-popover組件組合封裝 import url("//unpkg.com/element-ui2.15.14/lib/theme-chalk/index.css"); <script src"//unpkg.com/vue2/dist/vue.js"></script> <script src"//…

棗莊高防服務器如何實現全球覆蓋?

利用 棗莊高防服務器如何實現全球覆蓋&#xff1f; 嗨&#xff0c;親愛的讀者們&#xff01;今天我們將帶你探索如何利用棗莊高防服務器實現全球覆蓋&#xff0c;讓你的網站在世界各地都能穩定快速地訪問。而我們這次推薦的服務器商是萊卡云&#xff08;Lcayun&#xff09;&am…