Lucene 入門(mén)教程

了解搜索技術(shù)

什么是搜索

簡(jiǎn)單的說(shuō)栅葡,搜索就是搜尋射亏、查找,在IT行業(yè)中就是指用戶輸入關(guān)鍵字田晚,通過(guò)相應(yīng)的算法嘱兼,查詢并返回用戶所需要的信息。

普通的數(shù)據(jù)庫(kù)搜索

類似:select * from 表名 where 字段名 like ‘%關(guān)鍵字%’

例如:select * from article where content like ’%here%’

結(jié)果: where here shere

新的業(yè)務(wù)需求

比如贤徒,用戶在百度文本框中輸入芹壕,“吃飯睡覺(jué)寫(xiě)程序”,會(huì)出現(xiàn)的以下結(jié)果:

從結(jié)果可以看出接奈,百度搜索具備以下明顯特點(diǎn):

1踢涌、即使在相關(guān)結(jié)果數(shù)量接近500萬(wàn)時(shí),也能快速得出結(jié)果序宦。

2睁壁、搜索的結(jié)果不僅僅局限于完整的“吃飯睡覺(jué)寫(xiě)程序”這一短語(yǔ),而是將此短語(yǔ)拆分成互捌,“寫(xiě)程序”潘明,“吃飯”,“睡覺(jué)”秕噪,“程序”等關(guān)鍵字钳降。

3、對(duì)拆分后的搜索關(guān)鍵字進(jìn)行標(biāo)紅顯示腌巾。

4遂填、…

問(wèn)題:上述功能铲觉,使用大家以前學(xué)過(guò)的數(shù)據(jù)庫(kù)搜索能夠方便實(shí)現(xiàn)嗎?

普通的數(shù)據(jù)庫(kù)搜索的缺陷

類似:select * from 表名 where 字段名 like ‘%關(guān)鍵字%’

例如:select * from article where content like ’%here%’

結(jié)果: where here shere

1吓坚、因?yàn)闆](méi)有通過(guò)高效的索引方式撵幽,所以查詢的速度在大量數(shù)據(jù)的情況下是很慢。

2礁击、搜索效果比較差盐杂,只能對(duì)用戶輸入的完整關(guān)鍵字首尾位進(jìn)行模糊匹配。用戶搜索的結(jié)果誤多輸入一個(gè)字符客税,可能就導(dǎo)致查詢出的結(jié)果遠(yuǎn)離用戶的預(yù)期况褪。

數(shù)據(jù)的分類

我們生活中的數(shù)據(jù)總體分為兩種:結(jié)構(gòu)化數(shù)據(jù)和非結(jié)構(gòu)化數(shù)據(jù)。據(jù)IDC的一項(xiàng)調(diào)查報(bào)告中指出:企業(yè)中80%的數(shù)據(jù)都是非結(jié)構(gòu)化數(shù)據(jù)更耻,這些數(shù)據(jù)每年都按指數(shù)增長(zhǎng)60%测垛。據(jù)報(bào)道指出:平均只有1%-5%的數(shù)據(jù)是結(jié)構(gòu)化的數(shù)據(jù)。

結(jié)構(gòu)化數(shù)據(jù):指具有固定格式或有限長(zhǎng)度的數(shù)據(jù)秧均,如數(shù)據(jù)庫(kù)食侮,元數(shù)據(jù)等。

非結(jié)構(gòu)化數(shù)據(jù):指不定長(zhǎng)或無(wú)固定格式的數(shù)據(jù)目胡,如郵件锯七,word文檔等磁盤(pán)上的文件.

非結(jié)構(gòu)化數(shù)據(jù)是數(shù)據(jù)結(jié)構(gòu)不規(guī)則或不完整,沒(méi)有預(yù)定義的數(shù)據(jù)模型誉己,不方便用數(shù)據(jù)庫(kù)二維邏輯表來(lái)表現(xiàn)的數(shù)據(jù)眉尸。包括所有格式的辦公文檔、文本巨双、圖片噪猾、XML, HTML、各類報(bào)表筑累、圖像和音頻/視頻信息等等袱蜡。

計(jì)算機(jī)信息化系統(tǒng)中的數(shù)據(jù)分為結(jié)構(gòu)化數(shù)據(jù)和非結(jié)構(gòu)化數(shù)據(jù)。非結(jié)構(gòu)化數(shù)據(jù)其格式非常多樣慢宗,標(biāo)準(zhǔn)也是多樣性的坪蚁,而且在技術(shù)上非結(jié)構(gòu)化信息比結(jié)構(gòu)化信息更難標(biāo)準(zhǔn)化和理解。所以存儲(chǔ)镜沽、檢索敏晤、發(fā)布以及利用需要更加智能化的IT技術(shù),比如海量存儲(chǔ)缅茉、智能檢索茵典、知識(shí)挖掘、內(nèi)容保護(hù)宾舅、信息的增值開(kāi)發(fā)利用等统阿。

非結(jié)構(gòu)化數(shù)據(jù)查詢方法

(1)順序掃描法(Serial Scanning)

所謂順序掃描,比如要找內(nèi)容包含某一個(gè)字符串的文件筹我,就是一個(gè)文檔一個(gè)文檔的看扶平,對(duì)于每一個(gè)文檔,從頭看到尾蔬蕊,如果此文檔包含此字符串结澄,則此文檔為我們要找的文件,接著看下一個(gè)文件岸夯,直到掃描完所有的文件麻献。如利用windows的搜索也可以搜索文件內(nèi)容,只是相當(dāng)?shù)穆?/p>

(2)全文檢索(Full-text Search)

將非結(jié)構(gòu)化數(shù)據(jù)中的一部分信息提取出來(lái)猜扮,重新組織勉吻,使其變得有一定結(jié)構(gòu),然后對(duì)此有一定結(jié)構(gòu)的數(shù)據(jù)進(jìn)行搜索旅赢,從而達(dá)到搜索相對(duì)較快的目的齿桃。這部分從非結(jié)構(gòu)化數(shù)據(jù)中提取出的然后重新組織的信息,我們稱之索引煮盼。

例如:字典短纵。字典的拼音表和部首檢字表就相當(dāng)于字典的索引,對(duì)每一個(gè)字的解釋是非結(jié)構(gòu)化的僵控,如果字典沒(méi)有音節(jié)表和部首檢字表香到,在茫茫辭海中找一個(gè)字只能順序掃描。然而字的某些信息可以提取出來(lái)進(jìn)行結(jié)構(gòu)化處理报破,比如讀音悠就,就比較結(jié)構(gòu)化,分聲母和韻母泛烙,分別只有幾種可以一一列舉理卑,于是將讀音拿出來(lái)按一定的順序排列,每一項(xiàng)讀音都指向此字的詳細(xì)解釋的頁(yè)數(shù)蔽氨。我們搜索時(shí)按結(jié)構(gòu)化的拼音搜到讀音藐唠,然后按其指向的頁(yè)數(shù),便可找到我們的非結(jié)構(gòu)化數(shù)據(jù)——也即對(duì)字的解釋鹉究。

這種先建立索引宇立,再對(duì)索引進(jìn)行搜索的過(guò)程就叫全文檢索(Full-text Search)

雖然創(chuàng)建索引的過(guò)程也是非常耗時(shí)的自赔,但是索引一旦創(chuàng)建就可以多次使用妈嘹,全文檢索主要處理的是查詢,所以耗時(shí)間創(chuàng)建索引是值得的绍妨。

如何實(shí)現(xiàn)全文檢索

可以使用Lucene實(shí)現(xiàn)全文檢索润脸。Lucene是apache下的一個(gè)開(kāi)放源代碼的全文檢索引擎工具包柬脸。提供了完整的查詢引擎和索引引擎,部分文本分析引擎毙驯。Lucene的目的是為軟件開(kāi)發(fā)人員提供一個(gè)簡(jiǎn)單易用的工具包倒堕,以方便的在目標(biāo)系統(tǒng)中實(shí)現(xiàn)全文檢索的功能。

應(yīng)用場(chǎng)景:對(duì)于數(shù)據(jù)量大爆价、數(shù)據(jù)結(jié)構(gòu)不固定的數(shù)據(jù)可采用全文檢索方式搜索垦巴,比如百度、Google等搜索引擎铭段、論壇站內(nèi)搜索骤宣、電商網(wǎng)站站內(nèi)搜索等。

Lucene 定義

https://lucene.apache.org/

Lucene 是一個(gè)開(kāi)放源代碼的全文檢索引擎工具包序愚,但它不是一個(gè)完整的全文檢索引擎憔披,而是一個(gè)全文檢索引擎的架構(gòu),提供了完整的查詢引擎和索引引擎展运,部分文本分析引擎活逆。

image

Lucene產(chǎn)生的背景

數(shù)據(jù)庫(kù)中的搜索很容易實(shí)現(xiàn),通常都是使用sql語(yǔ)句進(jìn)行查詢拗胜,而且能很快的得到查詢結(jié)果蔗候。

為什么數(shù)據(jù)庫(kù)搜索很容易?

因?yàn)閿?shù)據(jù)庫(kù)中的數(shù)據(jù)存儲(chǔ)是有規(guī)律的埂软,有行有列而且數(shù)據(jù)格式锈遥、數(shù)據(jù)長(zhǎng)度都是固定的。

Lucene執(zhí)行原理

Lucene索引

1勘畔、文檔層次結(jié)構(gòu)

索引(Index):一個(gè)索引放在一個(gè)文件夾中所灸;
段(Segment):一個(gè)索引中可以有很多段,段與段之間是獨(dú)立的炫七,添加新的文檔可能產(chǎn)生新段爬立,不同的段可以合并成一個(gè)新段;
文檔(Document):文檔是創(chuàng)建索引的基本單位万哪,不同的文檔保存在不同的段中侠驯,一個(gè)段可以包含多個(gè)文檔;
域(Field):一個(gè)文檔包含不同類型的信息奕巍,可以拆分開(kāi)索引吟策;
詞(Term):詞是索引的最小單位,是經(jīng)過(guò)詞法分析和語(yǔ)言處理后的數(shù)據(jù)的止;
  
文檔是Lucene索引和搜索的原子單位檩坚,文檔為包含一個(gè)或多個(gè)域的容器,而域則依次包含“真正的”被搜索內(nèi)容,域值通過(guò)分詞技術(shù)處理匾委,得到多個(gè)詞元拖叙。如一篇小說(shuō)信息可以稱為一個(gè)文檔;小說(shuō)信息又包含多個(gè)域剩檀,比如標(biāo)題憋沿,作者、簡(jiǎn)介沪猴、最后更新時(shí)間等;對(duì)標(biāo)題這一個(gè)域采用分詞技術(shù)采章,又可以等到一個(gè)或多個(gè)詞元运嗜。

2、正向索引與反向索引

正向索引:文檔占據(jù)了中心的位置悯舟,每個(gè)文檔指向了一個(gè)它所包含的索引項(xiàng)的序列担租。正向信息就是按層次保存了索引一直到詞的包含關(guān)系: 索引 -> 段-> 文檔 -> 域 -> 詞
反向索引:一種以索引項(xiàng)為中心來(lái)組織文檔的方式,每個(gè)索引項(xiàng)指向一個(gè)文檔序列抵怎,這個(gè)序列中的文檔都包含該索引項(xiàng)奋救。反向信息保存了詞典的倒排表映射:詞 -> 文檔
  
Lucene使用到的就是反向索引。

索引和搜索原理

全文索引和搜索流程圖:

1反惕、綠色表示索引過(guò)程尝艘,對(duì)要搜索的原始內(nèi)容進(jìn)行索引構(gòu)建一個(gè)索引庫(kù),索引過(guò)程包括:

確定原始內(nèi)容即要搜索的內(nèi)容-->采集文檔-->創(chuàng)建文檔-->分析文檔-->索引文檔

2姿染、紅色表示搜索過(guò)程背亥,從索引庫(kù)中搜索內(nèi)容,搜索過(guò)程包括:

用戶通過(guò)搜索界面-->創(chuàng)建查詢-->執(zhí)行搜索悬赏,從索引庫(kù)搜索-->渲染搜索結(jié)果

2.2 創(chuàng)建索引

對(duì)文檔索引的過(guò)程狡汉,將用戶要搜索的文檔內(nèi)容進(jìn)行索引,索引存儲(chǔ)在索引庫(kù)(index)中闽颇。

這里我們要搜索的文檔是磁盤(pán)上的文本文件盾戴,根據(jù)案例描述:凡是文件名或文件內(nèi)容包括關(guān)鍵字的文件都要找出來(lái),這里要對(duì)文件名和文件內(nèi)容創(chuàng)建索引兵多。

1) 獲取原始文檔

原始文檔 是指要索引和搜索的內(nèi)容尖啡。原始內(nèi)容包括互聯(lián)網(wǎng)上的網(wǎng)頁(yè)(爬蟲(chóng))、數(shù)據(jù)庫(kù)中的數(shù)據(jù)(sql查詢)中鼠、磁盤(pán)上的文件(IO流獲瓤缮簟)等。

從互聯(lián)網(wǎng)上援雇、數(shù)據(jù)庫(kù)矛渴、文件系統(tǒng)中等獲取需要搜索的原始信息,這個(gè)過(guò)程就是信息采集,信息采集的目的是為了對(duì)原始內(nèi)容進(jìn)行索引具温。

在Internet上采集信息的軟件通常稱為爬蟲(chóng)或蜘蛛蚕涤,也稱為網(wǎng)絡(luò)機(jī)器人,爬蟲(chóng)訪問(wèn)互聯(lián)網(wǎng)上的每一個(gè)網(wǎng)頁(yè)铣猩,將獲取到的網(wǎng)頁(yè)內(nèi)容存儲(chǔ)起來(lái)揖铜。

Lucene不提供信息采集的類庫(kù),需要自己編寫(xiě)一個(gè)爬蟲(chóng)程序?qū)崿F(xiàn)信息采集达皿,也可以通過(guò)一些開(kāi)源軟件實(shí)現(xiàn)信息采集天吓,如下:

Nutch(http://lucene.apache.org/nutch), Nutch是apache的一個(gè)子項(xiàng)目,包括大規(guī)模爬蟲(chóng)工具峦椰,能夠抓取和分辨web網(wǎng)站數(shù)據(jù)龄寞。

jsoup(http://jsoup.org/ ),jsoup 是一款Java 的HTML解析器汤功,可直接解析某個(gè)URL地址物邑、HTML文本內(nèi)容。它提供了一套非常省力的API滔金,可通過(guò)DOM色解,CSS以及類似于jQuery的操作方法來(lái)取出和操作數(shù)據(jù)。

heritrix(http://sourceforge.net/projects/archive-crawler/files/)餐茵,Heritrix 是一個(gè)由 java 開(kāi)發(fā)的科阎、開(kāi)源的網(wǎng)絡(luò)爬蟲(chóng),用戶可以使用它來(lái)從網(wǎng)上抓取想要的資源钟病。其最出色之處在于它良好的可擴(kuò)展性萧恕,方便用戶實(shí)現(xiàn)自己的抓取邏輯。

獲取磁盤(pán)上文件的內(nèi)容肠阱,可以通過(guò)文件流來(lái)讀取文本文件的內(nèi)容票唆,對(duì)于pdf、doc屹徘、xls等文件可通過(guò)第三方提供的解析工具讀取文件內(nèi)容走趋,比如Apache POI讀取doc和xls的文件內(nèi)容。

2)創(chuàng)建文檔對(duì)象

獲取原始內(nèi)容的目的是為了索引噪伊,在索引前需要將原始內(nèi)容創(chuàng)建成文檔(Document)簿煌,文檔中包括一個(gè)一個(gè)的域(Field),域中存儲(chǔ)內(nèi)容鉴吹。

這里我們可以將磁盤(pán)上的一個(gè)文件當(dāng)成一個(gè)document姨伟,Document中包括一些Field(file_name文件名稱、file_path文件路徑豆励、file_size文件大小夺荒、file_content文件內(nèi)容)瞒渠,如下圖:

注意:每個(gè)Document可以有多個(gè)Field,不同的Document可以有不同的Field技扼,同一個(gè)Document可以有相同的Field(域名和域值都相同)

每個(gè)文檔都有一個(gè)唯一的編號(hào)伍玖,就是文檔id。

3) 分析文檔

將原始內(nèi)容創(chuàng)建為包含域(Field)的文檔(document)剿吻,需要再對(duì)域中的內(nèi)容進(jìn)行分析窍箍,分析的過(guò)程是經(jīng)過(guò)對(duì)原始文檔提取單詞、將字母轉(zhuǎn)為小寫(xiě)丽旅、去除標(biāo)點(diǎn)符號(hào)椰棘、去除停用詞等過(guò)程生成最終的語(yǔ)匯單元,可以將語(yǔ)匯單元理解為一個(gè)一個(gè)的單詞榄笙。

比如下邊的文檔經(jīng)過(guò)分析如下:

原文檔內(nèi)容:

Lucene is a Java full-text search engine. Lucene is not a complete

application, but rather a code library and API that can easily be used

to add search capabilities to applications.

分析后得到的語(yǔ)匯單元:

lucene晰搀、java、full办斑、search、engine杆逗。乡翅。。罪郊。

每個(gè)單詞叫做一個(gè)Term蠕蚜,不同的域中拆分出來(lái)的相同的單詞是不同的term。term中包含兩部分一部分是文檔的域名悔橄,另一部分是單詞的內(nèi)容靶累。

例如:文件名中包含apache和文件內(nèi)容中包含的apache是不同的term。

4) 創(chuàng)建索引

對(duì)所有文檔分析得出的語(yǔ)匯單元進(jìn)行索引癣疟,索引的目的是為了搜索挣柬,最終要實(shí)現(xiàn)只搜索被索引的語(yǔ)匯單元從而找到Document(文檔)。

注意:創(chuàng)建索引是對(duì)語(yǔ)匯單元索引睛挚,通過(guò)詞語(yǔ)找文檔邪蛔,這種索引的結(jié)構(gòu)叫倒排索引結(jié)構(gòu)

傳統(tǒng)方法是根據(jù)文件找到該文件的內(nèi)容扎狱,在文件內(nèi)容中匹配搜索關(guān)鍵字侧到,這種方法是順序掃描方法,數(shù)據(jù)量大淤击、搜索慢匠抗。

倒排索引結(jié)構(gòu)是根據(jù)內(nèi)容(詞語(yǔ))找文檔,如下圖:

倒排索引結(jié)構(gòu)也叫反向索引結(jié)構(gòu)污抬,包括索引和文檔兩部分汞贸,索引即詞匯表,它的規(guī)模較小,而文檔集合較大著蛙。

查詢索引

查詢索引也是搜索的過(guò)程删铃。搜索就是用戶輸入關(guān)鍵字,從索引(index)中進(jìn)行搜索的過(guò)程踏堡。根據(jù)關(guān)鍵字搜索索引猎唁,根據(jù)索引找到對(duì)應(yīng)的文檔,從而找到要搜索的內(nèi)容(這里指磁盤(pán)上的文件)顷蟆。

1) 用戶查詢接口

全文檢索系統(tǒng)提供用戶搜索的界面供用戶提交搜索的關(guān)鍵字诫隅,搜索完成展示搜索結(jié)果。

Lucene不提供制作用戶搜索界面的功能帐偎,需要根據(jù)自己的需求開(kāi)發(fā)搜索界面逐纬。

2) 創(chuàng)建查詢

用戶輸入查詢關(guān)鍵字執(zhí)行搜索之前需要先構(gòu)建一個(gè)查詢對(duì)象,查詢對(duì)象中可以指定查詢要搜索的Field文檔域削樊、查詢關(guān)鍵字等豁生,查詢對(duì)象會(huì)生成具體的查詢語(yǔ)法,

例如:  語(yǔ)法 “fileName:lucene”表示要搜索Field域的內(nèi)容為“l(fā)ucene”的文檔

3) 執(zhí)行查詢

搜索索引過(guò)程:

根據(jù)查詢語(yǔ)法在倒排索引詞典表中分別找出對(duì)應(yīng)搜索詞的索引漫贞,從而找到索引所鏈接的文檔鏈表憔杨。

比如搜索語(yǔ)法為“fileName:lucene”表示搜索出fileName域中包含Lucene的文檔骨杂。

搜索過(guò)程就是在索引上查找域?yàn)閒ileName蛛砰,并且關(guān)鍵字為L(zhǎng)ucene的term疾嗅,并根據(jù)term找到文檔id列表。

4) 渲染結(jié)果

以一個(gè)友好的界面將查詢結(jié)果展示給用戶谴蔑,用戶根據(jù)搜索結(jié)果找自己想要的信息豌骏,為了幫助用戶很快找到自己的結(jié)果,提供了很多展示的效果隐锭,比如搜索結(jié)果中將關(guān)鍵字高亮顯示窃躲,百度提供的快照等。

ElasticSearch vs Lucene

1. 成品與半成品的關(guān)系

2. Lucene專注于搜索底層的建設(shè)成榜,而ElasticSearch專注于企業(yè)應(yīng)用框舔。

參考資料

https://blog.csdn.net/weixin_42633131/article/details/82873731
https://tool.oschina.net/apidocs/apidoc?api=lucene-3.6.0
https://www.cnblogs.com/wwwggg/p/5588698.html
https://www.cnblogs.com/rodge-run/p/6551152.html


Kotlin開(kāi)發(fā)者社區(qū)

專注分享 Java、 Kotlin赎婚、Spring/Spring Boot刘绣、MySQL、redis挣输、neo4j纬凤、NoSQL、Android撩嚼、JavaScript停士、React挖帘、Node、函數(shù)式編程恋技、編程思想拇舀、"高可用,高性能蜻底,高實(shí)時(shí)"大型分布式系統(tǒng)架構(gòu)設(shè)計(jì)主題骄崩。

High availability, high performance, high real-time large-scale distributed system architecture design

分布式框架:Zookeeper薄辅、分布式中間件框架等
分布式存儲(chǔ):GridFS要拂、FastDFS、TFS站楚、MemCache脱惰、redis等
分布式數(shù)據(jù)庫(kù):Cobar、tddl窿春、Amoeba拉一、Mycat
云計(jì)算、大數(shù)據(jù)旧乞、AI算法
虛擬化舅踪、云原生技術(shù)
分布式計(jì)算框架:MapReduce、Hadoop良蛮、Storm、Flink等
分布式通信機(jī)制:Dubbo悍赢、RPC調(diào)用决瞳、共享遠(yuǎn)程數(shù)據(jù)、消息隊(duì)列等
消息隊(duì)列MQ:Kafka左权、MetaQ皮胡,RocketMQ
怎樣打造高可用系統(tǒng):基于硬件、軟件中間件赏迟、系統(tǒng)架構(gòu)等一些典型方案的實(shí)現(xiàn):HAProxy屡贺、基于Corosync+Pacemaker的高可用集群套件中間件系統(tǒng)
Mycat架構(gòu)分布式演進(jìn)
大數(shù)據(jù)Join背后的難題:數(shù)據(jù)、網(wǎng)絡(luò)锌杀、內(nèi)存和計(jì)算能力的矛盾和調(diào)和
Java分布式系統(tǒng)中的高性能難題:AIO甩栈,NIO,Netty還是自己開(kāi)發(fā)框架糕再?
高性能事件派發(fā)機(jī)制:線程池模型量没、Disruptor模型等等。突想。殴蹄。

合抱之木究抓,生于毫末;九層之臺(tái)袭灯,起于壘土刺下;千里之行,始于足下稽荧。不積跬步橘茉,無(wú)以至千里;不積小流蛤克,無(wú)以成江河捺癞。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市构挤,隨后出現(xiàn)的幾起案子髓介,更是在濱河造成了極大的恐慌,老刑警劉巖筋现,帶你破解...
    沈念sama閱讀 219,490評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件唐础,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡矾飞,警方通過(guò)查閱死者的電腦和手機(jī)一膨,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,581評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)洒沦,“玉大人豹绪,你說(shuō)我怎么就攤上這事∩暄郏” “怎么了瞒津?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,830評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)括尸。 經(jīng)常有香客問(wèn)我巷蚪,道長(zhǎng),這世上最難降的妖魔是什么濒翻? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,957評(píng)論 1 295
  • 正文 為了忘掉前任屁柏,我火速辦了婚禮,結(jié)果婚禮上有送,老公的妹妹穿的比我還像新娘淌喻。我一直安慰自己,他們只是感情好雀摘,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,974評(píng)論 6 393
  • 文/花漫 我一把揭開(kāi)白布似嗤。 她就那樣靜靜地躺著,像睡著了一般届宠。 火紅的嫁衣襯著肌膚如雪烁落。 梳的紋絲不亂的頭發(fā)上乘粒,一...
    開(kāi)封第一講書(shū)人閱讀 51,754評(píng)論 1 307
  • 那天,我揣著相機(jī)與錄音伤塌,去河邊找鬼灯萍。 笑死,一個(gè)胖子當(dāng)著我的面吹牛每聪,可吹牛的內(nèi)容都是我干的旦棉。 我是一名探鬼主播,決...
    沈念sama閱讀 40,464評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼药薯,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼绑洛!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起童本,我...
    開(kāi)封第一講書(shū)人閱讀 39,357評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤真屯,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后穷娱,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體绑蔫,經(jīng)...
    沈念sama閱讀 45,847評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,995評(píng)論 3 338
  • 正文 我和宋清朗相戀三年泵额,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了配深。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,137評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡嫁盲,死狀恐怖篓叶,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情羞秤,我是刑警寧澤澜共,帶...
    沈念sama閱讀 35,819評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站锥腻,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏母谎。R本人自食惡果不足惜瘦黑,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,482評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望奇唤。 院中可真熱鬧幸斥,春花似錦、人聲如沸咬扇。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,023評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)懈贺。三九已至经窖,卻和暖如春坡垫,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背画侣。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,149評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工冰悠, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人配乱。 一個(gè)月前我還...
    沈念sama閱讀 48,409評(píng)論 3 373
  • 正文 我出身青樓溉卓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親搬泥。 傳聞我的和親對(duì)象是個(gè)殘疾皇子桑寨,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,086評(píng)論 2 355