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 中的 B+ 樹索引MySql索引
- 【Mysql】InnoDB 中的聚簇索引、二級索引、聯合索引MySql索引
- 搞懂MySQL InnoDB B+樹索引MySql索引
- MySQL中InnoDB引擎對索引的擴充套件MySql索引套件
- Mysql innodb引擎(一)緩衝和索引MySql索引
- www.xttblog.com MySQL InnoDB 索引原理MySql索引
- MySQL中Innodb如何計算索引的統計資訊?MySql索引
- MySQL innodb如何選擇一個聚簇索引MySql索引
- 《MySQL實戰45講》學習筆記4——MySQL中InnoDB的索引MySql筆記索引
- innodb索引篇索引
- 淺析InnoDB引擎的索引和索引原理索引
- 一分鐘掌握MySQL的InnoDB引擎B+樹索引MySql索引
- MySQL用LIKE特殊字元搜尋MySql字元
- innodb 引擎索引 (一)索引
- InnoDB 索引詳解索引
- Win10系統禁止搜尋索引加密檔案的方法Win10索引加密
- 關於MySQL InnoDB表的二級索引是否加入主鍵的總結MySql索引
- SQL Server 全文搜尋功能、全文索引方式介紹SQLServer索引
- 18. 使用MySQL之全文字搜尋MySql
- MySQL單詞搜尋相關度排名MySql
- Mysql InnoDB B+樹索引和雜湊索引的區別? MongoDB 為什麼使用B-樹?MySql索引MongoDB
- Elasticsearch(ES)的高階搜尋(DSL搜尋)(上篇)Elasticsearch
- Elasticsearch(ES)的高階搜尋(DSL搜尋)(下篇)Elasticsearch
- 最佳路徑搜尋(二):啟發式搜尋(代價一致搜尋(Dijkstra search),貪心搜尋,A*搜尋)
- InnoDB索引與底層原理索引
- Nebula 基於 ElasticSearch 的全文搜尋引擎的文字搜尋Elasticsearch
- 海量資料搜尋---搜尋引擎
- 搜尋的未來是精品搜尋 | a16z
- 談談InnoDB中的B+樹索引索引
- 搜尋
- Redis全文搜尋教程之建立索引並關聯源資料Redis索引
- 後端技術雜談1:搜尋引擎基礎倒排索引後端索引
- MySQL Deadlocks in InnoDBMySql
- 搜尋引擎-03-搜尋引擎原理