MySql5.6全文索引 及 5.7 中文索引插件ngram

MySql 5.6.4 之后開始支持 innodb 全文索引模孩,之前版本只能使用MyISAM

直接開始:

創(chuàng)建一個表和索引

USE test;
 CREATE TABLE articles (
      id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,
      title VARCHAR(200),
      body TEXT,
      FULLTEXT KEY  `idx_ft_tb` (title,body) 
    ) ENGINE=InnoDB CHARACTER SET utf8mb4;

表已經(jīng)存在

ALTER TABLE articles ADD FULLTEXT INDEX ft_index (title,body) ;
或
CREATE FULLTEXT INDEX idx_ft_tbON articles (title,body)
-- 刪除索引
DROP INDEX idx_ft_tb ON test.articles ;
或
ALTER TABLE test.articles DROP INDEX idx_ft_tb ;

插入數(shù)據(jù)

 SET NAMES utf8mb4;

INSERT INTO articles (title,body) VALUES
    ('數(shù)據(jù)庫管理','在本教程中我將向你展示如何管理數(shù)據(jù)庫'),
    ('數(shù)據(jù)庫應(yīng)用開發(fā)','學(xué)習(xí)開發(fā)數(shù)據(jù)庫應(yīng)用程序'),
    ('項目 管理','在本教程中我將向你展示如何管理數(shù)據(jù)庫'),
    ('計算機 應(yīng)用開發(fā) 管理開發(fā)','學(xué)習(xí)開發(fā)數(shù)據(jù)庫應(yīng)用程序'),
    ('財務(wù)管理','在本教程中我將向你展示如何管理數(shù)據(jù)庫'),
    ('python開發(fā)','學(xué)習(xí)開發(fā)數(shù)據(jù)庫應(yīng)用程序'),
    ('項目中 管理開發(fā)','在本教程中我將向你展示如何管理數(shù)據(jù)庫'),
    ('財務(wù)管理','在 本 教程 中 我 將 向你 展示 如何 管理 數(shù)據(jù)庫'),
    ('database manage','in this job i will tell you how to manage'),
    ('項目中 管理開發(fā)2','在本教程中我將向你展示如何管理數(shù)據(jù)庫2'),
    ('項目管 管控','not u'),
    ('項目管控','not me'),
    ('項目 目管控','not us'),

查看生成的索引

SET GLOBAL innodb_ft_aux_table="test/articles";
SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_INDEX_CACHE ORDER BY doc_id, position;
注:如果修改了索引畦贸,可能會沒有結(jié)果需要執(zhí)行
OPTIMIZE TABLE articles

發(fā)現(xiàn)結(jié)果如圖

數(shù)據(jù)庫管理   2   2   1   2   0
在本教程中我將向你展示如何管理數(shù)據(jù)庫  2   8   4   2   16
數(shù)據(jù)庫應(yīng)用開發(fā) 3   3   1   3   0
學(xué)習(xí)開發(fā)數(shù)據(jù)庫應(yīng)用程序 3   7   3   3   22
在本教程中我將向你展示如何管理數(shù)據(jù)庫  2   8   4   4   14
計算機 5   5   1   5   0
應(yīng)用開發(fā)    5   5   1   5   10
學(xué)習(xí)開發(fā)數(shù)據(jù)庫應(yīng)用程序 3   7   3   5   23
財務(wù)管理    6   9   2   6   0
在本教程中我將向你展示如何管理數(shù)據(jù)庫  2   8   4   6   13
python開發(fā)    7   7   1   7   0
學(xué)習(xí)開發(fā)數(shù)據(jù)庫應(yīng)用程序 3   7   3   7   13
項目2 8   8   1   8   0
在本教程中我將向你展示如何管理數(shù)據(jù)庫  2   8   4   8   15
財務(wù)管理    6   9   2   9   0
數(shù)據(jù)庫 9   9   1   9   68
database    11  11  1   11  0
manage  11  11  1   11  9
job 11  11  1   11  24
tell    11  11  1   11  35
you 11  11  1   11  40
manage  11  11  1   11  42

三種查詢方式

默認會使用自然語言方式

MATCH (col1,col2,...) AGAINST (expr [search_modifier])
 
    search_modifier:
      {
           IN NATURAL LANGUAGE MODE
         | IN NATURAL LANGUAGE MODE WITH QUERY EXPANSION
         | IN BOOLEAN MODE
         | WITH QUERY EXPANSION
      }

①NATURAL LANGUAGE MODE

查詢帶有指定word的文檔周叮。因“NATURAL LANGUAGE MODE”為默認全文檢索模式,所以查詢語句中可以省略該關(guān)鍵字
MATCH()返回一個相關(guān)系數(shù)(relevance value)材泄,查詢結(jié)果會按relevance value值降序排列染簇,即相關(guān)性最高的結(jié)果置于首位。relevance value根據(jù)以下條件計算

  • word是否在記錄中出現(xiàn)
  • word在記錄中出現(xiàn)的次數(shù)
  • word在索引字段中的數(shù)量
  • 多少行記錄包含該word

②BOOLEAN MODE

AGAINST()中關(guān)鍵字的前后字符會有特殊含義模燥。BOOLEAN MODE全文檢索支持以下操作符

  • +word必須存在
  • -word必須不存在
  • (no operator)該word可選咖祭,如果出現(xiàn)relevance value更高
  • distance 僅用于InnoDB表。查詢多個單詞之間的距離是否在distance(字節(jié))內(nèi)
  • > < 分別表示出現(xiàn)該word時增加和降低relevance value
  • ~ 出現(xiàn)該word時relevance value變負值蔫骂,用于制造噪音詞(“noise” word)
  • * 表示以該字符串開頭的word么翰,寫在word前不生效,word*才有效
  • '' '' 中的內(nèi)容視作一個短語(整體)

③(NATURAL LANGUAGE MODE)WITH QUERY EXPANSION

全文檢索擴展查詢辽旋。當(dāng)查詢的關(guān)鍵詞太短浩嫌,需要隱含信息(implied knowledge)時比較有用。例如补胚,當(dāng)查詢“database”時可能意味著“MySQL”固该、“Oracle”、“DB2”以及“RDBMS”等詞語都應(yīng)該匹配和返回糖儡。在查詢語句中添加WITH QUERY EXPANSION或者IN NATURAL LANGUAGE MODE WITH QUERY EXPANSION啟用“blind query expansion”(也稱“automatic relevance feedback”)。擴展查詢分兩步執(zhí)行

  • 根據(jù)原始的查詢關(guān)鍵字表達式進行全文檢索
  • 根據(jù)第一步查詢的返回結(jié)果分詞后再進行一次全文檢索
mysql> SELECT * from test.articles where MATCH(title,body) AGAINST ('項目中' IN NATURAL LANGUAGE MODE);

+----+-----------------+--------------------------------------+
| id | title           | body                                 |
+----+-----------------+--------------------------------------+
|  7 | 項目中 管理開發(fā) | 在本教程中我將向你展示如何管理數(shù)據(jù)庫 |
+----+-----------------+--------------------------------------+
1 row in set
返回的 “項目中 管理開發(fā)” 在使用擴展查詢 會將自然查詢分詞后作為下一次的查詢條件
mysql> SELECT * from test.articles where MATCH(title,body) AGAINST ('項目中'  WITH QUERY EXPANSION);

+----+--------------------------+--------------------------------------+
| id | title                    | body                                 |
+----+--------------------------+--------------------------------------+
|  7 | 項目中 管理開發(fā)          | 在本教程中我將向你展示如何管理數(shù)據(jù)庫 |
|  4 | 計算機 應(yīng)用開發(fā) 管理開發(fā) | 學(xué)習(xí)開發(fā)數(shù)據(jù)庫應(yīng)用程序               |
|  1 | 數(shù)據(jù)庫管理               | 在本教程中我將向你展示如何管理數(shù)據(jù)庫 |
|  3 | 項目 管理                | 在本教程中我將向你展示如何管理數(shù)據(jù)庫 |
|  5 | 財務(wù)管理                 | 在本教程中我將向你展示如何管理數(shù)據(jù)庫 |
+----+--------------------------+--------------------------------------+
5 rows in set

blind query expansion通常會返回不相關(guān)的記錄而極大地增加查詢結(jié)果的“噪音”(noise)怔匣,因此僅當(dāng)查詢語句表達式簡短的情況下使用

試試索引好不好用

SELECT * from articles where MATCH(title,body) AGAINST ('項目');
無結(jié)果
SELECT * from articles where MATCH(title,body) AGAINST ('項目2');
有結(jié)果

從結(jié)果看出兩個問題

Q1.索引文檔并沒有根據(jù)漢語分詞握联,而是根據(jù)空格分隔桦沉,比如“項目2 管理” 被分成 項目2 和 管理 ,而“數(shù)據(jù)庫管理”沒有被分詞金闽。
Q2.分詞中雖然以空格分開也沒有出現(xiàn)纯露,但空格分開后3個以下的詞 如“項目” 和 “管理”并沒有生成索引詞。
A1:
  • 5.6版本只支持英文分詞代芜,英文都是以空格分開的(database manage)埠褪,中文詞都是沒有空格的,所以出現(xiàn)了一整句中文作為一個詞挤庇。
  • 內(nèi)嵌的文本解釋器決定單詞的開頭和結(jié)尾钞速,根據(jù)delimiter符號進行判斷,比如逗號嫡秕、空格渴语、點號。如果不是根據(jù)delimiter分割的昆咽,比如中文驾凶,解釋器就無法判斷出單詞的開頭和結(jié)尾了
  • 5.7.6中可以使用插件ngram解釋器來實現(xiàn)對中文、日文掷酗、韓文的支持调违,或者使用MeCab解釋器來支持日文
  • 也可以自己編寫插件解釋器。示例代碼位于plugin/fulltext目錄泻轰。
A2:
  • 3個以下的詞沒有生成索引詞是因為技肩,默認最小是innodb_ft_min_token_size=3
    也就是說,根據(jù)分隔符分開之后還得滿足長度3以上才可以
    innodb_ft_max_token_size=84 即 當(dāng)詞的長度超過84時糕殉,只取84長度
    對于MyISAM引擎為:ft_min_word_len 和 ft_max_word_len
    這個參數(shù)可以使用命令 show variables like '%ft%'; 查看
ft_boolean_syntax   + -><()~*:""&|
ft_max_word_len 84
ft_min_word_len 4
ft_query_expansion_limit    20
ft_stopword_file    (built-in)
innodb_ft_aux_table test/articles
innodb_ft_cache_size    8000000
innodb_ft_enable_diag_print OFF
innodb_ft_enable_stopword   ON
innodb_ft_max_token_size    84
innodb_ft_min_token_size    3
innodb_ft_num_word_optimize 2000
innodb_ft_result_cache_limit    2000000000
innodb_ft_server_stopword_table 
innodb_ft_sort_pll_degree   2
innodb_ft_total_cache_size  640000000
innodb_ft_user_stopword_table   

可以修改配置文件 C:\ProgramData\MySQL\MySQL Server 5.7\my.ini
innodb_ft_min_token_size=2 “項目管理”就可以生成 2個索引了
以上參數(shù)都會影響索引

5.7.6 支持了中文索引亩鬼,只需使用插件ngram

先刪除之前的索引

DROP INDEX idx_ft_tb ON test.articles ;

ALTER TABLE articles ADD FULLTEXT INDEX idx_ft_tb (title,body) 
WITH PARSER ngram;

使用命令查看生成的索引詞

show variables like '%token_size%';
innodb_ft_max_token_size    84
innodb_ft_min_token_size    3
ngram_token_size    2

發(fā)現(xiàn)ngram_token_size 為 2 即漢語的詞截取長度為2

數(shù)據(jù)  2   9   8   2   0
據(jù)庫  2   9   8   2   3
庫管  2   2   1   2   6
...
...
n開  7   7   1   7   5
開發(fā)  3   7   3   7   6
ou  10  10  1   10  41
ge  10  10  1   10  42
ho  7   10  2   10  44
ow  10  10  1   10  45

修改ngram_token_size的值是以下效果

ngram_token_size=1 : '信', '息', '系', '統(tǒng)' 
ngram_token_size=2 : '信息', '息系', '系統(tǒng)';
ngram_token_size=3 : '信息系', '息系統(tǒng)';
ngram_token_size=4 : '信息系統(tǒng)'; 

查詢方式不變
①ngram Parser Term Search

在NATURAL LANGUAGE MODE檢索模式下,查詢關(guān)鍵字表達式被轉(zhuǎn)換為若干個ngram詞語的聯(lián)合阿蝶。例如雳锋,字符串“管理開發(fā)”(假設(shè)ngram_token_size=2)會被轉(zhuǎn)換為“管理 理開 開發(fā)”。給出多行記錄羡洁,這多條記錄都匹配檢索詞語“管理 理開 開發(fā)”玷过,只要包含其中之一即可,匹配其一即可返回

mysql> SELECT * from test.articles where MATCH(title,body) AGAINST ('管理開發(fā)'
);
+----+--------------------------+------------------------------------------------+
| id | title                    | body                                           |
+----+--------------------------+------------------------------------------------+
|  4 | 計算機 應(yīng)用開發(fā) 管理開發(fā) | 學(xué)習(xí)開發(fā)數(shù)據(jù)庫應(yīng)用程序                         |
|  7 | 項目中 管理開發(fā)          | 在本教程中我將向你展示如何管理數(shù)據(jù)庫           |
| 10 | 項目中 管理開發(fā)2         | 在本教程中我將向你展示如何管理數(shù)據(jù)庫2          |
|  2 | 數(shù)據(jù)庫應(yīng)用開發(fā)           | 學(xué)習(xí)開發(fā)數(shù)據(jù)庫應(yīng)用程序                         |
|  6 | python開發(fā)               | 學(xué)習(xí)開發(fā)數(shù)據(jù)庫應(yīng)用程序                         |
|  1 | 數(shù)據(jù)庫管理               | 在本教程中我將向你展示如何管理數(shù)據(jù)庫           |
|  3 | 項目 管理                | 在本教程中我將向你展示如何管理數(shù)據(jù)庫           |
|  5 | 財務(wù)管理                 | 在本教程中我將向你展示如何管理數(shù)據(jù)庫           |
|  8 | 財務(wù)管理                 | 在 本 教程 中 我 將 向你 展示 如何 管理 數(shù)據(jù)庫 |
+----+--------------------------+------------------------------------------------+
9 rows in set

在BOOLEAN MODE檢索模式下筑煮,查詢關(guān)鍵字表達式被轉(zhuǎn)換為一個ngram短語檢索辛蚊。例如,字符串“項目中管理”(假設(shè)ngram_token_size=2)會被轉(zhuǎn)換為“項目 目中 中管 管理”真仲。給出多行記錄袋马,這多條記錄都匹配檢索詞語“項目 目中 中管 管理”。但是只有包含 “項目中管理” 的記錄行匹配檢索短語 '"項目 目中 中管 管理"'秸应,完全匹配才可返回虑凛。

mysql> SELECT * from test.articles where MATCH(title,body) AGAINST ('管理開發(fā)' IN BOOLEAN MODE);

+----+--------------------------+---------------------------------------+
| id | title                    | body                                  |
+----+--------------------------+---------------------------------------+
|  4 | 計算機 應(yīng)用開發(fā) 管理開發(fā) | 學(xué)習(xí)開發(fā)數(shù)據(jù)庫應(yīng)用程序                |
|  7 | 項目中 管理開發(fā)          | 在本教程中我將向你展示如何管理數(shù)據(jù)庫  |
| 10 | 項目中 管理開發(fā)2         | 在本教程中我將向你展示如何管理數(shù)據(jù)庫2 |
+----+--------------------------+---------------------------------------+
3 rows in set

②ngram Parser Wildcard Search
由于ngram FULLTEXT index僅包含ngram分詞碑宴,而不包含詞語的詞首信息,所以通配符檢索可能返回預(yù)想之外的結(jié)果桑谍。
如果通配符檢索的前綴詞語小于“ngram_token_size”延柠,查詢會返回包含以該前綴詞語開頭的ngram分詞的所有索引行。例如锣披,假設(shè)ngram_token_size=2贞间,對于“管*”的檢索會返回所有以“管”開頭的記錄。

mysql> SELECT * from test.articles where MATCH(title,body) AGAINST ('管*
' in boolean mode);
+----+--------------------------+------------------------------------------------+
| id | title                    | body                                           |
+----+--------------------------+------------------------------------------------+
|  1 | 數(shù)據(jù)庫管理               | 在本教程中我將向你展示如何管理數(shù)據(jù)庫           |
|  3 | 項目 管理                | 在本教程中我將向你展示如何管理數(shù)據(jù)庫           |
|  5 | 財務(wù)管理                 | 在本教程中我將向你展示如何管理數(shù)據(jù)庫           |
|  8 | 財務(wù)管理                 | 在 本 教程 中 我 將 向你 展示 如何 管理 數(shù)據(jù)庫 |
|  7 | 項目中 管理開發(fā)          | 在本教程中我將向你展示如何管理數(shù)據(jù)庫           |
| 10 | 項目中 管理開發(fā)2         | 在本教程中我將向你展示如何管理數(shù)據(jù)庫2          |
|  4 | 計算機 應(yīng)用開發(fā) 管理開發(fā) | 學(xué)習(xí)開發(fā)數(shù)據(jù)庫應(yīng)用程序                         |
+----+--------------------------+------------------------------------------------+
7 rows in set

如果通配符檢索的前綴詞語大于“ngram_token_size”雹仿,該前綴詞語會被轉(zhuǎn)換為一個ngram短語增热,與此同時,通配符符號會被忽略盅粪。例如钓葫,假設(shè)ngram_token_size=2,“管理開發(fā) *”通配符檢索會被轉(zhuǎn)換為“管理 開發(fā)”(“ngram Parser Term Search”的BOOLEAN MODE)票顾。

mysql> SELECT * from test.articles where MATCH(title,body) AGAINST ('管理開發(fā)
*' in boolean mode);
+----+--------------------------+---------------------------------------+
| id | title                    | body                                  |
+----+--------------------------+---------------------------------------+
|  4 | 計算機 應(yīng)用開發(fā) 管理開發(fā) | 學(xué)習(xí)開發(fā)數(shù)據(jù)庫應(yīng)用程序                |
|  7 | 項目中 管理開發(fā)          | 在本教程中我將向你展示如何管理數(shù)據(jù)庫  |
| 10 | 項目中 管理開發(fā)2         | 在本教程中我將向你展示如何管理數(shù)據(jù)庫2 |
+----+--------------------------+---------------------------------------+
3 rows in set

③ngram Parser Phrase Search

短語檢索會被轉(zhuǎn)換為ngram短語檢索础浮。例如,檢索短語“abc”會被轉(zhuǎn)換為“ab bc”奠骄,包含“abc”和“ab bc”的記錄都會被返回豆同。檢索短語“abc def”會被轉(zhuǎn)換為“ab bc de ef”,包含“abcdef”的記錄不會被返回含鳞。

mysql> SELECT * from test.articles where MATCH(title,body) AGAINST ('"項目管控"' in boolean mode);

+----+-------------+--------+
| id | title       | body   |
+----+-------------+--------+
| 11 | 項目管 管控 | not u  |
| 12 | 項目管控    | not me |
| 13 | 項目 目管控 | not us |
+----+-------------+--------+
3 rows in set

query expansion擴展查詢同樣適用于ngram parser

mysql> SELECT * from test.articles where MATCH(title,body) AGAINST ('項目管控
'  WITH QUERY EXPANSION);
+----+--------------------------+------------------------------------------------+
| id | title                    | body                                           |
+----+--------------------------+------------------------------------------------+
| 10 | 項目中 管理開發(fā)2         | 在本教程中我將向你展示如何管理數(shù)據(jù)庫2          |
|  7 | 項目中 管理開發(fā)          | 在本教程中我將向你展示如何管理數(shù)據(jù)庫           |
|  1 | 數(shù)據(jù)庫管理               | 在本教程中我將向你展示如何管理數(shù)據(jù)庫           |
|  3 | 項目 管理                | 在本教程中我將向你展示如何管理數(shù)據(jù)庫           |
|  5 | 財務(wù)管理                 | 在本教程中我將向你展示如何管理數(shù)據(jù)庫           |
| 12 | 項目管控                 | not me                                         |
| 13 | 項目 目管控              | not us                                         |
| 11 | 項目管 管控              | not u                                          |
|  4 | 計算機 應(yīng)用開發(fā) 管理開發(fā) | 學(xué)習(xí)開發(fā)數(shù)據(jù)庫應(yīng)用程序                         |
|  8 | 財務(wù)管理                 | 在 本 教程 中 我 將 向你 展示 如何 管理 數(shù)據(jù)庫 |
|  2 | 數(shù)據(jù)庫應(yīng)用開發(fā)           | 學(xué)習(xí)開發(fā)數(shù)據(jù)庫應(yīng)用程序                         |
|  6 | python開發(fā)               | 學(xué)習(xí)開發(fā)數(shù)據(jù)庫應(yīng)用程序                         |
+----+--------------------------+------------------------------------------------+
12 rows in set

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末影锈,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子蝉绷,更是在濱河造成了極大的恐慌鸭廷,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,681評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件熔吗,死亡現(xiàn)場離奇詭異辆床,居然都是意外死亡,警方通過查閱死者的電腦和手機桅狠,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,205評論 3 399
  • 文/潘曉璐 我一進店門讼载,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人中跌,你說我怎么就攤上這事咨堤。” “怎么了漩符?”我有些...
    開封第一講書人閱讀 169,421評論 0 362
  • 文/不壞的土叔 我叫張陵一喘,是天一觀的道長。 經(jīng)常有香客問我嗜暴,道長凸克,這世上最難降的妖魔是什么铝侵? 我笑而不...
    開封第一講書人閱讀 60,114評論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮触徐,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘狐赡。我一直安慰自己撞鹉,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 69,116評論 6 398
  • 文/花漫 我一把揭開白布颖侄。 她就那樣靜靜地躺著鸟雏,像睡著了一般。 火紅的嫁衣襯著肌膚如雪览祖。 梳的紋絲不亂的頭發(fā)上孝鹊,一...
    開封第一講書人閱讀 52,713評論 1 312
  • 那天,我揣著相機與錄音展蒂,去河邊找鬼又活。 笑死,一個胖子當(dāng)著我的面吹牛锰悼,可吹牛的內(nèi)容都是我干的柳骄。 我是一名探鬼主播,決...
    沈念sama閱讀 41,170評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼箕般,長吁一口氣:“原來是場噩夢啊……” “哼耐薯!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起丝里,我...
    開封第一講書人閱讀 40,116評論 0 277
  • 序言:老撾萬榮一對情侶失蹤曲初,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后杯聚,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體臼婆,經(jīng)...
    沈念sama閱讀 46,651評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,714評論 3 342
  • 正文 我和宋清朗相戀三年械媒,在試婚紗的時候發(fā)現(xiàn)自己被綠了目锭。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,865評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡纷捞,死狀恐怖痢虹,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情主儡,我是刑警寧澤奖唯,帶...
    沈念sama閱讀 36,527評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站糜值,受9級特大地震影響丰捷,放射性物質(zhì)發(fā)生泄漏坯墨。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,211評論 3 336
  • 文/蒙蒙 一病往、第九天 我趴在偏房一處隱蔽的房頂上張望捣染。 院中可真熱鬧,春花似錦停巷、人聲如沸耍攘。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,699評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蕾各。三九已至,卻和暖如春庆揪,著一層夾襖步出監(jiān)牢的瞬間式曲,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,814評論 1 274
  • 我被黑心中介騙來泰國打工缸榛, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留吝羞,地道東北人。 一個月前我還...
    沈念sama閱讀 49,299評論 3 379
  • 正文 我出身青樓仔掸,卻偏偏與公主長得像脆贵,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子起暮,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,870評論 2 361

推薦閱讀更多精彩內(nèi)容