【9種】ElasticSearch分詞器詳解,一文getJ趸!P椒!| 博學谷狂野架構(gòu)師

ElasticSearch 分詞器

img
  • 作者: 博學谷狂野架構(gòu)師
  • GitHub:GitHub地址 (有我精心準備的130本電子書PDF)

只分享干貨粗仓、不吹水嫁怀,讓我們一起加油!??

概述

分詞器的主要作用將用戶輸入的一段文本借浊,按照一定邏輯塘淑,分析成多個詞語的一種工具

什么是分詞器

顧名思義,文本分析就是把全文本轉(zhuǎn)換成一系列單詞(term/token)的過程蚂斤,也叫分詞存捺。在 ES 中,Analysis 是通過分詞器(Analyzer) 來實現(xiàn)的曙蒸,可使用 ES 內(nèi)置的分析器或者按需定制化分析器捌治。

舉一個分詞簡單的例子:比如你輸入 Mastering Elasticsearch,會自動幫你分成兩個單詞纽窟,一個是 mastering肖油,另一個是 elasticsearch,可以看出單詞也被轉(zhuǎn)化成了小寫的臂港。

圖片

分詞器的構(gòu)成

分詞器是專門處理分詞的組件森枪,分詞器由以下三部分組成:

組成部分
character filter

接收原字符流视搏,通過添加、刪除或者替換操作改變原字符流

例如:去除文本中的html標簽县袱,或者將羅馬數(shù)字轉(zhuǎn)換成阿拉伯數(shù)字等浑娜。一個字符過濾器可以有零個或者多個

tokenizer

簡單的說就是將一整段文本拆分成一個個的詞。

例如拆分英文式散,通過空格能將句子拆分成一個個的詞棚愤,但是對于中文來說,無法使用這種方式來實現(xiàn)杂数。在一個分詞器中,有且只有一個tokenizeer

token filters

將切分的單詞添加宛畦、刪除或者改變

例如將所有英文單詞小寫,或者將英文中的停詞a刪除等揍移,在token filters中次和,不允許將token(分出的詞)position或者offset改變。同時那伐,在一個分詞器中踏施,可以有零個或者多個token filters.

分詞順序
圖片

同時 Analyzer 三個部分也是有順序的,從圖中可以看出罕邀,從上到下依次經(jīng)過 Character Filters畅形,Tokenizer 以及 Token Filters,這個順序比較好理解诉探,一個文本進來肯定要先對文本數(shù)據(jù)進行處理日熬,再去分詞,最后對分詞的結(jié)果進行過濾肾胯。

索引和搜索分詞

文本分詞會發(fā)生在兩個地方:

  • 創(chuàng)建索引:當索引文檔字符類型為text時竖席,在建立索引時將會對該字段進行分詞。
  • 搜索:當對一個text類型的字段進行全文檢索時敬肚,會對用戶輸入的文本進行分詞毕荐。
配置分詞器

默認ES使用standard analyzer,如果默認的分詞器無法符合你的要求艳馒,可以自己配置

分詞器測試

可以通過_analyzerAPI來測試分詞的效果憎亚。

COPY# 過濾html 標簽
POST _analyze
{
    "tokenizer":"keyword", #原樣輸出
    "char_filter":["html_strip"], # 過濾html標簽
    "text":"<b>hello world<b>"  # 輸入的文本
}
image-20220808135231869

指定分詞器

使用地方

分詞器的使用地方有兩個:

  • 創(chuàng)建索引時
  • 進行搜索時
創(chuàng)建索引時指定分詞器

如果設(shè)置手動設(shè)置了分詞器,ES將按照下面順序來確定使用哪個分詞器:

  • 先判斷字段是否有設(shè)置分詞器弄慰,如果有第美,則使用字段屬性上的分詞器設(shè)置
  • 如果設(shè)置了analysis.analyzer.default,則使用該設(shè)置的分詞器
  • 如果上面兩個都未設(shè)置曹动,則使用默認的standard分詞器
字段指定分詞器

為title屬性指定分詞器

COPYPUT my_index
{
  "mappings": {
    "properties": {
      "title":{
        "type":"text",
        "analyzer": "whitespace"
      }
    }
  }
}
設(shè)置默認分詞器
COPYPUT my_index
{
  "settings": {
    "analysis": {
      "analyzer": {
        "default":{
          "type":"simple"
        }
      }
    }
  }
}
搜索時如何確定分詞器

在搜索時斋日,通過下面參數(shù)依次檢查搜索時使用的分詞器:

  • 搜索時指定analyzer參數(shù)
  • 創(chuàng)建mapping時指定字段的search_analyzer屬性
  • 創(chuàng)建索引時指定settinganalysis.analyzer.default_search
  • 查看創(chuàng)建索引時字段指定的analyzer屬性
  • 如果上面幾種都未設(shè)置牲览,則使用默認的standard分詞器墓陈。
指定analyzer

搜索時指定analyzer查詢參數(shù)

COPYGET my_index/_search
{
  "query": {
    "match": {
      "message": {
        "query": "Quick foxes",
        "analyzer": "stop"
      }
    }
  }
}
指定字段analyzer
COPYPUT my_index
{
  "mappings": {
    "properties": {
      "title":{
        "type":"text",
        "analyzer": "whitespace",
        "search_analyzer": "simple"
      }
    }
  }
}
指定默認default_seach
COPYPUT my_index
{
  "settings": {
    "analysis": {
      "analyzer": {
        "default":{
          "type":"simple"
        },
        "default_seach":{
          "type":"whitespace"
        }
      }
    }
  }
}

內(nèi)置分詞器

es在索引文檔時恶守,會通過各種類型 Analyzer 對text類型字段做分析,

不同的 Analyzer 會有不同的分詞結(jié)果贡必,內(nèi)置的分詞器有以下幾種兔港,基本上內(nèi)置的 Analyzer 包括 Language Analyzers 在內(nèi),對中文的分詞都不夠友好仔拟,中文分詞需要安裝其它 Analyzer

分析器 描述 分詞對象 結(jié)果
standard 標準分析器是默認的分析器衫樊,如果沒有指定,則使用該分析器利花。它提供了基于文法的標記化(基于 Unicode 文本分割算法科侈,如 Unicode 標準附件 # 29所規(guī)定) ,并且對大多數(shù)語言都有效炒事。 The 2 QUICK Brown-Foxes jumped over the lazy dog’s bone. [ the, 2, quick, brown, foxes, jumped, over, the, lazy, dog’s, bone ]
simple 簡單分析器將文本分解為任何非字母字符的標記臀栈,如數(shù)字、空格挠乳、連字符和撇號权薯、放棄非字母字符,并將大寫字母更改為小寫字母睡扬。 The 2 QUICK Brown-Foxes jumped over the lazy dog’s bone. [ the, quick, brown, foxes, jumped, over, the, lazy, dog, s, bone ]
whitespace 空格分析器在遇到空白字符時將文本分解為術(shù)語 The 2 QUICK Brown-Foxes jumped over the lazy dog’s bone. [ The, 2, QUICK, Brown-Foxes, jumped, over, the, lazy, dog’s, bone. ]
stop 停止分析器與簡單分析器相同盟蚣,但增加了刪除停止字的支持。默認使用的是 _english_ 停止詞卖怜。 The 2 QUICK Brown-Foxes jumped over the lazy dog’s bone. [ quick, brown, foxes, jumped, over, lazy, dog, s, bone ]
keyword 不分詞屎开,把整個字段當做一個整體返回 The 2 QUICK Brown-Foxes jumped over the lazy dog’s bone. [The 2 QUICK Brown-Foxes jumped over the lazy dog’s bone.]
pattern 模式分析器使用正則表達式將文本拆分為術(shù)語。正則表達式應(yīng)該匹配令牌分隔符马靠,而不是令牌本身牍戚。正則表達式默認為 w+ (或所有非單詞字符)。 The 2 QUICK Brown-Foxes jumped over the lazy dog’s bone. [ the, 2, quick, brown, foxes, jumped, over, the, lazy, dog, s, bone ]
多種西語系 arabic, armenian, basque, bengali, brazilian, bulgarian, catalan, cjk, czech, danish, dutch, english等等 一組旨在分析特定語言文本的分析程序虑粥。

中文擴展分析器

中文分詞器最簡單的是ik分詞器如孝,還有jieba分詞,哈工大分詞器等

分詞器 描述 分詞對象 結(jié)果
ik_smart ik分詞器中的簡單分詞器娩贷,支持自定義字典第晰,遠程字典 學如逆水行舟,不進則退 [學如逆水行舟,不進則退]
ik_max_word ik_分詞器的全量分詞器彬祖,支持自定義字典茁瘦,遠程字典 學如逆水行舟,不進則退 [學如逆水行舟,學如逆水,逆水行舟,逆水,行舟,不進則退,不進,則,退]

詞語分詞

標準分詞器(Standard Tokenizer)

根據(jù)standardUnicode文本分段算法的定義储笑,將文本劃分為多個單詞邊界的上的術(shù)語

它是 ES 默認的分詞器甜熔,它會對輸入的文本按詞的方式進行切分,切分好以后會進行轉(zhuǎn)小寫處理突倍,默認的 stopwords 是關(guān)閉的腔稀。

圖片
使用案例

下面使用 Kibana 看一下它是怎么樣進行工作的

原始內(nèi)容
COPYIn 2020, Java is the best language in the world.
測試分詞

在 Kibana 的開發(fā)工具(Dev Tools)中指定 Analyzer 為 standard盆昙,并輸入文本 In 2020, Java is the best language in the world.,然后我們運行一下:

COPYGET _analyze
{
  "text":"In 2020, Java is the best language in the world.",
  "analyzer": "standard"
}
image-20220808105014779

可以看出是按照空格焊虏、非字母的方式對輸入的文本進行了轉(zhuǎn)換淡喜,比如對 Java 做了轉(zhuǎn)小寫,對一些停用詞也沒有去掉诵闭,比如 in炼团,其中 token 為分詞結(jié)果;start_offset 為起始偏移疏尿;end_offset 為結(jié)束偏移瘟芝;position 為分詞位置。

可配置項
選項 描述
max_token_length 最大令牌長度褥琐。如果看到令牌超過此長度模狭,則將其max_token_length間隔分割。默認為255踩衩。
stopwords 預(yù)定義的停用詞列表嚼鹉,例如english或包含停用詞列表的數(shù)組。默認為none驱富。
stopwords_path 包含停用詞的文件的路徑锚赤。
COPY{
    "settings": {
        "analysis": {
            "analyzer": {
                "my_english_analyzer": {
                    "type": "standard",
                    "max_token_length": 5,
                    "stopwords": "_english_"
                }
            }
        }
    }
}

簡單分詞器(Letter Tokenizer)

當simple分析器遇到非字母的字符時,它會將文本劃分為多個術(shù)語褐鸥,它小寫所有術(shù)語线脚,對于中文和亞洲很多國家的語言來說是無用的

圖片

它只包括了 Lower CaseTokenizer,它會按照非字母切分叫榕,非字母的會被去除浑侥,最后對切分好的做轉(zhuǎn)小寫處理,然后接著用剛才的輸入文本晰绎,分詞器換成 simple 來進行分詞寓落,運行結(jié)果如下:

使用案例
原始內(nèi)容
COPYIn 2020, Java is the best language in the world.
測試分詞
COPYGET _analyze
{
  "text":"In 2020, Java is the best language in the world.",
  "analyzer": "simple"
}
image-20220808105857762

空白分詞器(Whitespace Tokenizer)

它非常簡單,根據(jù)名稱也可以看出是按照空格進行切分

該whitespace分析儀將文本分為方面每當遇到任何空白字符荞下,和上面的分詞器不同伶选,空白分詞器默認并不會將內(nèi)容轉(zhuǎn)換為小寫。

圖片
使用案例
原始內(nèi)容
COPYIn 2020, Java is the best language in the world.
測試分詞
COPYGET _analyze
{
  "text":"In 2020, Java is the best language in the world.",
  "analyzer": "whitespace"
}
image-20220808110235685

電子郵件分詞器(UAX URL Email Tokenizer)

此分詞器主要是針對email和url地址進行關(guān)鍵內(nèi)容的標記尖昏。

使用案例
原始內(nèi)容
COPY"Email me at john.smith@global-international.com"
測試分詞
COPYGET _analyze
{
  "text":"Email me at john.smith@global-international.com",
  "tokenizer": "uax_url_email"
}
可配置項

max_token_length最大令牌長度仰税。如果看到令牌超過此長度,則將其max_token_length間隔分割抽诉。默認為255

COPY{
    "settings": {
        "analysis": {
            "analyzer": {
                "my_english_analyzer": {
                    "type": "standard",
                    "max_token_length": 5
                }
            }
        }
    }
}

經(jīng)典分詞器(Classic Tokenizer)

可對首字母縮寫詞陨簇,公司名稱,電子郵件地址和互聯(lián)網(wǎng)主機名進行特殊處理迹淌,但是河绽,這些規(guī)則并不總是有效己单,并且此關(guān)鍵詞生成器不適用于英語以外的大多數(shù)其他語言

特點
  • 它最多將標點符號拆分為單詞,刪除標點符號葵姥,但是荷鼠,不帶空格的點被認為是查詢關(guān)鍵詞的一部分
  • 此分詞器可以將郵件地址和URL地址識別為查詢的term(詞條)
使用案例
原始內(nèi)容
COPY"The 2 QUICK Brown-Foxes jumped over the lazy dog's bone."
測試分詞
COPYGET _analyze
{
  "text":"The 2 QUICK Brown-Foxes jumped over the lazy dog's bone.",
  "analyzer": "classic"
}
image-20220808111755030
可配置項

max_token_length最大令牌長度句携。如果看到令牌超過此長度榔幸,則將其max_token_length間隔分割。默認為255矮嫉。

COPY{
    "settings": {
        "analysis": {
            "analyzer": {
                "my_analyzer": {
                    "tokenizer": "my_tokenizer"
                }
            },
            "tokenizer": {
                "my_tokenizer": {
                    "type": "classic",
                    "max_token_length": 5
                }
            }
        }
    }
}

結(jié)構(gòu)化文本分詞

關(guān)鍵詞分詞器(Keyword Tokenizer)

它其實不做分詞處理削咆,只是將輸入作為 Term 輸出

關(guān)鍵詞分詞器其實是執(zhí)行了一個空操作的分析,它將任何輸入的文本作為一個單一的關(guān)鍵詞輸出蠢笋。

圖片
使用案例
原始內(nèi)容
COPY"In 2020, Java is the best language in the world."
測試分詞
COPYGET _analyze
{
  "text":"In 2020, Java is the best language in the world.",
  "analyzer": "keyword"
}

會發(fā)現(xiàn)前后內(nèi)容根本沒有發(fā)生改變拨齐,這也是這個分詞器的作用,有些時候我們針對一個需要分詞查詢的字段進行查詢的時候昨寞,可能并不希望查詢條件被分詞瞻惋,這個時候就可以使用這個分詞器,整個查詢條件作為一個關(guān)鍵詞使用

image-20220808112235674

正則分詞器(Pattern Tokenizer)

模式標記器使用 Java正則表達式援岩。使用JAVA的正則表達式進行詞語的拆分歼狼。

它可以通過正則表達式的方式進行分詞,默認是用 \W+ 進行分割的享怀,也就是非字母的符合進行切分的羽峰。

圖片
使用案例
原始內(nèi)容
COPY"In 2020, Java is the best language in the world."
測試分詞
COPYGET _analyze
{
  "text":"In 2020, Java is the best language in the world.",
  "analyzer": "patter"
}
image-20220808112737629
可配置項

正則分詞器有以下的選項

選項 描述
pattern 正則表達式
flags 正則表達式標識
lowercase 是否使用小寫詞匯
stopwords 停止詞的列表。
stopwords_path 定義停止詞文件的路徑添瓷。
COPY{
    "settings": {
        "analysis": {
            "analyzer": {
                "my_email_analyzer": {
                    "type": "pattern",
                    "pattern": "\\W|_",
                    "lowercase": true
                }
            }
        }
    }
}

路徑分詞器(Path Tokenizer)

可以對文件系統(tǒng)的路徑樣式的請求進行拆分梅屉,返回被拆分各個層級內(nèi)容。

使用案例
原始內(nèi)容
COPY"/one/two/three"
測試分詞
COPYGET _analyze
{
  "text":"/one/two/three",
  "tokenizer":"path_hierarchy"
}
image-20220808113500717
可配置項
選項 描述
delimiter 用作路徑分隔符的字符
replacement 用于定界符的可選替換字符
buffer_size 單次讀取到術(shù)語緩沖區(qū)中的字符數(shù)鳞贷。默認為1024坯汤。術(shù)語緩沖區(qū)將以該大小增長,直到所有文本都被消耗完為止搀愧。建議不要更改此設(shè)置玫霎。
reverse 正向還是反向獲取關(guān)鍵詞
skip 要忽略的內(nèi)容
COPY{
    "settings": {
        "analysis": {
            "analyzer": {
                "my_analyzer": {
                    "tokenizer": "my_tokenizer"
                }
            },
            "tokenizer": {
                "my_tokenizer": {
                    "type": "path_hierarchy",
                    "delimiter": "-",
                    "replacement": "/",
                    "skip": 2
                }
            }
        }
    }
}

語言分詞(Language Analyzer)

ES 為不同國家語言的輸入提供了 Language Analyzer 分詞器,在里面可以指定不同的語言

支持語種

支持如下語種:

關(guān)鍵字 語種
arabic 美 /??r?b?k/ 阿拉伯語
armenian 美 /ɑ?r?mi?ni?n/ 亞美尼亞語
basque 美 /b?sk,bɑ?sk/ 巴斯克語
bengali 美 /be??ɡɑ?li/ 孟加拉語
brazilian 美 /br??z?li?n/ 巴西語
bulgarian 美 /b?l?ɡeri?n/ 保加利亞語
catalan 美 /?k?t?l?n/ 加泰羅尼亞語
cjk 中日韓統(tǒng)一表意文字
czech 美 /t?ek/ 捷克語
danish 美 /?de?n??/ 丹麥語
dutch 美 /d?t?/ 荷蘭語
english 美 /???ɡl??/ 英語
estonian 美 /e?sto?ni?n/ 愛沙尼亞語
finnish 美 /?f?n??/ 芬蘭語
french 美 /frent?/ 法語
galician 美 /ɡ??l??n/ 加里西亞語
german 美 /?d???rm?n/ 德語
greek 美 /ɡri?k/ 希臘語
hindi 美 /?h?ndi/ 北印度語
hungarian 美 /h???ɡeri?n/ 匈牙利語
indonesian 美 /??nd??ni??n/ 印度尼西亞語
irish 美 /?a?r??/ 愛爾蘭語
italian 美 /??t?li?n/ 意大利語
latvian 美 /?l?tvi?n/ 拉脫維亞語
lithuanian 美 /?l?θu?e?ni?n/ 立陶宛語
norwegian 美 /n??r?wi?d??n/ 挪威語
persian /‘p??r??n/ 波斯語
portuguese 美 /?p??rt???ɡi?z/ 葡萄牙語
romanian 美 /ro’men??n/ 羅馬尼亞語
russian 美 /?r??n/ 俄語
sorani 索拉尼語
spanish 美 /?sp?n??/ 西班牙語
swedish 美 /?swi?d??/ 瑞典語
turkish 美 /?t??rk??/ 土耳其語
thai 美 /ta?/ 泰語
使用案例

下面我們使用英語進行分析

原始內(nèi)容
COPY"In 2020, Java is the best language in the world."
測試分詞
COPYGET _analyze
{
  "text":"In 2020, Java is the best language in the world.",
  "analyzer":"english"
}
image-20220808114216744

自定義分詞器

當內(nèi)置的分詞器無法滿足需求時妈橄,可以創(chuàng)建custom類型的分詞器庶近。

配置參數(shù)
參數(shù) 描述
tokenizer 內(nèi)置或定制的tokenizer.(必須)
char_filter 內(nèi)置或定制的char_filter(非必須)
filter 內(nèi)置或定制的token filter(非必須)
position_increment_gap 當值為文本數(shù)組時,設(shè)置改值會在文本的中間插入假空隙眷蚓。設(shè)置該屬性鼻种,對與后面的查詢會有影響。默認該值為100.
創(chuàng)建索引

上面的示例中定義了一個名為my_custom_analyzer的分詞器

該分詞器的typecustom沙热,tokenizerstandard叉钥,char_filterhmtl_strip,filter定義了兩個分別為:lowercaseasciifolding

COPYPUT my_index
{
  "settings": {
    "analysis": {
      "analyzer": {
        "my_custom_analyzer":{
          "type":"custom",
          "tokenizer":"standard",
          "char_filter":["html_strip"],
          "filter":["lowercase","asciifolding"]
        }
      }
    }
  }
}
使用案例
原始內(nèi)容
COPYIs this <b>déjà vu</b>?
測試分詞
COPYPOST my_index/_analyze
{
  "text": "Is this <b>déjà vu</b>?",
  "analyzer": "my_custom_analyzer"
}
image-20220808140137712

中文分詞器

IKAnalyzer

IKAnalyzer是一個開源的罢缸,基于java的語言開發(fā)的輕量級的中文分詞工具包

從2006年12月推出1.0版開始,IKAnalyzer已經(jīng)推出了3個大版本投队,在 2012 版本中枫疆,IK 實現(xiàn)了簡單的分詞歧義排除算法,標志著 IK 分詞器從單純的詞典分詞向模擬語義分詞衍化

使用IK分詞器

IK提供了兩個分詞算法:

  • ik_smart:最少切分敷鸦。
  • ik_max_word:最細粒度劃分息楔。

ik_smart

使用案例
原始內(nèi)容
COPY傳智教育的教學質(zhì)量是杠杠的
測試分詞
COPYGET _analyze
{
  "analyzer": "ik_smart",
  "text": "傳智教育的教學質(zhì)量是杠杠的"
}
image-20220808115450647

ik_max_word

使用案例
原始內(nèi)容
COPY傳智教育的教學質(zhì)量是杠杠的
測試分詞
COPYGET _analyze
{
  "analyzer": "ik_max_word",
  "text": "傳智教育的教學質(zhì)量是杠杠的"
}
image-20220808115513668

自定義詞庫

我們在使用IK分詞器時會發(fā)現(xiàn)其實有時候分詞的效果也并不是我們所期待的

問題描述

例如我們輸入“傳智教育的教學質(zhì)量是杠杠的”,但是分詞器會把“傳智教育”進行拆開扒披,分為了“傳”值依,“智”,“教育”碟案,但我們希望的是“傳智教育”可以不被拆開愿险。

image-20220808115543696
解決方案

對于以上的問題,我們只需要將自己要保留的詞价说,加到我們的分詞器的字典中即可

編輯字典內(nèi)容

進入elasticsearch目錄plugins/ik/config中辆亏,創(chuàng)建我們自己的字典文件yixin.dic,并添加內(nèi)容:

COPYcd plugins/ik/config
echo "傳智教育" > custom.dic
擴展字典

進入我們的elasticsearch目錄 :plugins/ik/config鳖目,打開IKAnalyzer.cfg.xml文件扮叨,進行如下配置:

COPYvi IKAnalyzer.cfg.xml
#增加如下內(nèi)容
<entry key="ext_dict">custom.dic</entry>
再次測試

重啟ElasticSearch,再次使用kibana測試

COPYGET _analyze
{
  "analyzer": "ik_max_word",
  "text": "傳智教育的教學質(zhì)量是杠杠的"
}

可以發(fā)現(xiàn)疑苔,現(xiàn)在我們的詞匯”傳智教育”就不會被拆開了甫匹,達到我們想要的效果了

image-20220808134046401

本文由傳智教育博學谷狂野架構(gòu)師教研團隊發(fā)布。

如果本文對您有幫助惦费,歡迎關(guān)注點贊兵迅;如果您有任何建議也可留言評論私信,您的支持是我堅持創(chuàng)作的動力薪贫。

轉(zhuǎn)載請注明出處恍箭!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市瞧省,隨后出現(xiàn)的幾起案子扯夭,更是在濱河造成了極大的恐慌,老刑警劉巖鞍匾,帶你破解...
    沈念sama閱讀 218,386評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件交洗,死亡現(xiàn)場離奇詭異,居然都是意外死亡橡淑,警方通過查閱死者的電腦和手機构拳,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評論 3 394
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人置森,你說我怎么就攤上這事斗埂。” “怎么了凫海?”我有些...
    開封第一講書人閱讀 164,704評論 0 353
  • 文/不壞的土叔 我叫張陵呛凶,是天一觀的道長。 經(jīng)常有香客問我行贪,道長漾稀,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,702評論 1 294
  • 正文 為了忘掉前任瓮顽,我火速辦了婚禮县好,結(jié)果婚禮上围橡,老公的妹妹穿的比我還像新娘暖混。我一直安慰自己,他們只是感情好翁授,可當我...
    茶點故事閱讀 67,716評論 6 392
  • 文/花漫 我一把揭開白布拣播。 她就那樣靜靜地躺著,像睡著了一般收擦。 火紅的嫁衣襯著肌膚如雪贮配。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,573評論 1 305
  • 那天塞赂,我揣著相機與錄音泪勒,去河邊找鬼。 笑死宴猾,一個胖子當著我的面吹牛圆存,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播仇哆,決...
    沈念sama閱讀 40,314評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼沦辙,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了讹剔?” 一聲冷哼從身側(cè)響起油讯,我...
    開封第一講書人閱讀 39,230評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎延欠,沒想到半個月后陌兑,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,680評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡由捎,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,873評論 3 336
  • 正文 我和宋清朗相戀三年兔综,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,991評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡邻奠,死狀恐怖笤喳,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情碌宴,我是刑警寧澤杀狡,帶...
    沈念sama閱讀 35,706評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站贰镣,受9級特大地震影響呜象,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜碑隆,卻給世界環(huán)境...
    茶點故事閱讀 41,329評論 3 330
  • 文/蒙蒙 一恭陡、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧上煤,春花似錦休玩、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,910評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至独泞,卻和暖如春呐矾,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背懦砂。 一陣腳步聲響...
    開封第一講書人閱讀 33,038評論 1 270
  • 我被黑心中介騙來泰國打工胡嘿, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留茸歧,地道東北人。 一個月前我還...
    沈念sama閱讀 48,158評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像兵钮,于是被迫代替她去往敵國和親俏橘。 傳聞我的和親對象是個殘疾皇子睡榆,可洞房花燭夜當晚...
    茶點故事閱讀 44,941評論 2 355

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