MySQL InnoDB搜尋索引的Stopwords
InnoDB搜尋索引的Stopwords
InnoDB的預設禁止詞列表相對較短,因為來自技術、文學和其他來源的文件經常使用短詞作為關鍵字或重要短語。例如,你可能搜尋“是”或“不是”,並期望得到一個合理的結果,而不是讓所有這些詞都被忽略
InnoDB預設的stopword列表可以透過查詢INFORMATION_SCHEMA檢視。INNODB_FT_DEFAULT_STOPWORD表。
mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_DEFAULT_STOPWORD; +-------+ | value | +-------+ | a | | about | | an | | are | | as | | at | | be | | by | | com | | de | | en | | for | | from | | how | | i | | in | | is | | it | | la | | of | | on | | or | | that | | the | | this | | to | | was | | what | | when | | where | | who | | will | | with | | und | | the | | www | +-------+ 36 rows in set (0.01 sec)
為了對所有InnoDB表定義了一個自定義的stopword列表,那麼使用與innodb_ft_default_stopword表相同的結構來定義你自定義的stopword表,然後向表中插入stopwords,並且在建立全文索引之前以db_name/table_name的形式設定innodb_ft_server_stopword_table選項的值。自定義的stopword表必須有一個varchar型別的value列。下面的例子演示瞭如何為innodb建立一個新的全域性stopword表。
mysql> CREATE TABLE my_stopwords(value VARCHAR(30)) ENGINE = INNODB; Query OK, 0 rows affected (0.21 sec) mysql> INSERT INTO my_stopwords(value) VALUES ('Ishmael'); Query OK, 1 row affected (0.12 sec) mysql> CREATE TABLE opening_lines ( -> id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY, -> opening_line TEXT(500), -> author VARCHAR(200), -> title VARCHAR(200) -> ) ENGINE=InnoDB; Query OK, 0 rows affected (0.14 sec) mysql> INSERT INTO opening_lines(opening_line,author,title) VALUES -> ('Call me Ishmael.','Herman Melville','Moby-Dick'), -> ('A screaming comes across the sky.','Thomas Pynchon','Gravity\'s Rainbow'), -> ('I am an invisible man.','Ralph Ellison','Invisible Man'), -> ('Where now? Who now? When now?','Samuel Beckett','The Unnamable'), -> ('It was love at first sight.','Joseph Heller','Catch-22'), -> ('All this happened, more or less.','Kurt Vonnegut','Slaughterhouse-Five'), -> ('Mrs. Dalloway said she would buy the flowers herself.','Virginia Woolf','Mrs. Dalloway'), -> ('It was a pleasure to burn.','Ray Bradbury','Fahrenheit 451'); Query OK, 8 rows affected (0.04 sec) Records: 8 Duplicates: 0 Warnings: 0 mysql> SET GLOBAL innodb_ft_server_stopword_table = 'mysql/my_stopwords'; Query OK, 0 rows affected (0.00 sec) mysql> CREATE FULLTEXT INDEX idx ON opening_lines(opening_line); Query OK, 0 rows affected, 1 warning (0.91 sec) Records: 0 Duplicates: 0 Warnings: 1
預設情況下,長度小於3個字元或大於84個字元的單詞不會出現在InnoDB全文搜尋索引中。最大和最小字長值可以透過innodb_ft_max_token_size和innodb_ft_min_token_size變數進行配置。這種預設行為不適用於ngram解析器外掛。ngram令牌大小由
ngram_token_size選項定義。
透過查詢INFORMATION_SCHEMA.INNODB_FT_INDEX_TABLE中的單詞,驗證指定的stopword ('Ishmael')沒有出現。
mysql> SET GLOBAL innodb_ft_aux_table='mysql/opening_lines'; Query OK, 0 rows affected (0.01 sec) mysql> SELECT word FROM INFORMATION_SCHEMA.INNODB_FT_INDEX_TABLE; +-----------+ | word | +-----------+ | across | | all | | burn | | buy | | call | | comes | | dalloway | | first | | flowers | | happened | | herself | | invisible | | less | | love | | man | | more | | mrs | | now | | now | | now | | pleasure | | said | | screaming | | she | | sight | | sky | | the | | the | | this | | was | | was | | when | | where | | who | | would | +-----------+ 35 rows in set (0.00 sec)
要在一個表一個表的基礎上建立stopword列表,需要建立其他stopword表,並在建立全文索引之前使用innodb_ft_user_stopword_table選項指定想要使用的stopword表。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26015009/viewspace-2750306/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MySQL InnoDB 索引MySql索引
- mysql innodb索引高度MySql索引
- 探索MySQL的InnoDB索引失效MySql索引
- MySQL InnoDB的索引擴充套件MySql索引套件
- MySQL的InnoDB索引原理詳解MySql索引
- 【Mysql】InnoDB 中的 B+ 樹索引MySql索引
- 【Mysql】InnoDB 中的聚簇索引、二級索引、聯合索引MySql索引
- 搞懂MySQL InnoDB B+樹索引MySql索引
- 谷歌數月內推移動搜尋索引 PC搜尋退居二線谷歌索引
- 搜尋引擎:MapReduce實戰----倒排索引索引
- MySQL中InnoDB引擎對索引的擴充套件MySql索引套件
- Mysql innodb引擎(一)緩衝和索引MySql索引
- 【Lucene&&Solr】Lucene索引和搜尋流程Solr索引
- MySQL中Innodb如何計算索引的統計資訊?MySql索引
- www.xttblog.com MySQL InnoDB 索引原理MySql索引
- mysql innodb新建索引堵塞update ,insert,deleteMySql索引delete
- ORACLE 索引和MYSQL INNODB 輔助索引對NULL的處理區別Oracle索引MySqlNull
- 產品級搜尋技術-全文字索引索引
- MySQL用LIKE特殊字元搜尋MySql字元
- MySQL innodb如何選擇一個聚簇索引MySql索引
- Mysql innodb引擎和myisam引擎使用索引區別MySql索引
- mysql innodb 索引失效問題引起表級鎖MySql索引
- 《MySQL實戰45講》學習筆記4——MySQL中InnoDB的索引MySql筆記索引
- 搜尋學習基礎--倒排索引的過程解讀索引
- 搜尋引擎索引的資料結構和演算法索引資料結構演算法
- mysql的中文全文搜尋實踐(二)薦MySql
- 淺析InnoDB引擎的索引和索引原理索引
- 【預研】搜尋引擎基礎——inverted index(倒排索引)Index索引
- 一分鐘掌握MySQL的InnoDB引擎B+樹索引MySql索引
- MYSQL INNODB 組合索引分支節點資料解析MySql索引
- Win10系統通過禁用索引器回退加快搜尋索引速度的方法Win10索引
- Win10系統透過禁用索引器回退加快搜尋索引速度的方法Win10索引
- InnoDB 索引詳解索引
- InnoDB索引實現索引
- Win10系統禁止搜尋索引加密檔案的方法Win10索引加密
- SQL Server 全文搜尋功能、全文索引方式介紹SQLServer索引
- 搜尋引擎索引資料結構和演算法索引資料結構演算法
- 線上加索引出現MySQL與InnoDB索引數量不相同報錯索引MySql