標籤:
背景:搞個個人部落格的全文檢索搜尋得用like啥的,現在mysql版本號碼已經大於5.6.4了也就支援了innodb的全文檢索搜尋了,剛查了下目前版本號碼都到MySQL Community Server 5.6.19 了,所以,一些小的應用可以用它做全文檢索搜尋了,像sphinx和Lucene這樣偏重的、需要配置或開發的,節省了成本。
這兒有一個原創的Mysql全文檢索搜尋的文章, mysql的全文檢索搜尋功能:
http://blog.csdn.net/bravekingzhang/article/details/6727541
基於mysql全文索引的深入理解:
http://www.jb51.net/article/37738.htm
為什麼要設定 Mysql 的 ft_min_word_len=1:
http://blog.csdn.net/shilian_h/article/details/6215537
MySQL 全文檢索搜尋支援簡述:
從MySQL 4.0以上 myisam引擎就支援了full text search 全文檢索搜尋,在一般的小網站或者blog上可以使用這個特性支援搜尋。
那麼怎麼使用了,簡單看看:
1.建立一個表,指定支援fulltext的列
CREATE TABLE articles (
id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,
title VARCHAR(200),
body TEXT,
FULLTEXT (title,body)
);
2.插入一些資料作為測試
INSERT INTO articles (title,body) VALUES
(‘MySQL Tutorial‘,‘DBMS stands for DataBase ...‘),
(‘How To Use MySQL Well‘,‘After you went through a ...‘),
(‘Optimizing MySQL‘,‘In this tutorial we will show ...‘),
(‘1001 MySQL Tricks‘,‘1. Never run mysqld as root. 2. ...‘),
(‘MySQL vs. YourSQL‘,‘In the following database comparison ...‘),
(‘MySQL Security‘,‘When configured properly, MySQL ...‘);
3.select查詢fulltext的列
SELECT * FROM articles
WHERE MATCH (title,body) AGAINST (‘database‘);
查詢結果:
5 MySQL vs. YourSQL In the following database comparison ...
1 MySQL Tutorial DBMS stands for DataBase ...
全文檢索查詢中的boolean語句, + -跟普通的搜尋引擎文法一樣
SELECT * FROM articles WHERE MATCH (title,body)
AGAINST (‘+MySQL -YourSQL‘ IN BOOLEAN MODE);
innodb不支援fulltext,當然可以使用http://sphinxsearch.com/ sphinx來dump資料庫資料支援全文檢索搜尋。
原文地址:http://www.javaarch.net/jiagoushi/700.htm
後記,MySQL 5.6.4裡才添加了InnoDB引擎的Full-Text索引支援,或用張宴兄弟的基於Sphinx+MySQL的千萬級資料全文檢索索引(搜尋引擎)架構設計: http://blog.s135.com/post/360/
Q:
我想在查詢時使用MATCH(...) AGAINST(...)文法,但是我的資料表引擎是Innodb,當我CREATE FULLTEXT INDEX的時候,返回提示The used table type doesn‘t support FULLTEXT indexes。
我想問的是在innodb引擎中是否不能使用FULLTEXT引擎?有什麼替代品嗎?可以使用MATCH(...) AGAINST(...)文法嗎?
A:
MySQL 5.6.4裡才添加了InnoDB引擎的Full-Text索引支援。
不能升級MySQL版本的話:
推薦用Lucene(Elasticsearch比較容易部署)或Sphinx這樣的第三方解決方案。
innodb 不支援FULLTEXT類型的全文索引,但是innodb可以使用sphinx外掛程式支援全文索引,並且效果更好。
sphinx 是一個開源軟體,提供多種語言的API介面,可以最佳化mysql的各種查詢。
如果這個表更新不頻繁,查詢量不大,又趕時間,可以用觸發器、定時任務或者其他類似的DBA技巧建立支援全文索引的鏡像表(如MyISAM類型的),代碼改動會小一些。
MySQL5.6 InnoDB FULLTEXTIndexes研究測試:
http://blog.csdn.net/zyz511919766/article/details/12780173
mysql 5.6.4支援nosql:
在最新的 mysql-5.6.4-labs-innodb-memcached 中,實現了簡單的給予 key/value的nosql功能,其主要原理
就是mysqld除了監聽3306連接埠之外,同時監聽11211連接埠。使mysqld和memcached服務處在同一進程中。通過
資料庫、表與欄位的映射,將緩衝在memcache的資料插入到映射的表中。安裝包中提供了三張表:containers
cache_policies和config_options,表containers就提供了映射關係,表cache_policies提供了三種儲存方式(
innodb_only資料只插入表,cache_only只快取資料,caching即快取資料又插入表),表config_options中提供
了一個預設分隔符號“|”,就是說如果在表containers的values欄位中定義了col1,col2...欄位,那在設定緩衝值時就
可以用val1|val2的形式,這樣將會把val1插入到col1,val2插入到col2。
來自:http://blog.csdn.net/sunny5211/article/details/7357893
這個不能算是全文檢索搜尋, 只是傳統的全表搜尋。如果使用mysql的全文檢查,在200萬資料集上,不可能用那麼長的時間的。
使用mysql全文檢索索引的方法如下:
1. 配置mysql參數ft_min_word_len=1
在資料表的文字欄位中建立fulltext索引。
2.將原始文本進行分詞(處理成按空格分隔的字串),可使用一些開源的分詞模組實現。 再匯入到mysql資料表中
3. 使用mysq select * from tb1 where title match‘詞語‘ 進行檢索。
來自:http://www.oschina.net/question/123890_133459
justwinit@向東部落格 專註WEB應用 構架之美 --- 構架之美,在於盡態極妍 | 應用之美,在於藥到病除
地址:http://www.justwinit.cn/post/7253/
著作權。轉載時必須以連結形式註明作者和原始出處及本聲明!
MySQL 全文檢索搜尋支援, mysql 5.6.4支援Innodb的全文檢索索引和類memcache的nosql支援