详解Lucene全文检索基础架构

2 篇文章 0 订阅
订阅专栏

本文是 bilibili-《超系统学习Lucene全文检索技术》的学习笔记。


数据查询方法

顺序扫描法

数据表中查询包含某个字符串的文档,逐行逐字对比,对于每一个文档,需从头开始扫描待匹配的字段,直到找到目标字符串或扫描到文档末尾。

顺序扫描法,查询准确率高,但查询速度随着数据量增大,越来越慢。具体应用如数据库正则和like关键字模糊查询,又或者文档编辑器的ctrl+f查询。


倒排索引(全文检索过程使用倒排索引)

提前处理正文内容,如过滤特殊符号和特殊标签,进行切分词、去停词等,得到每一个文档的词、词位置、词频等信息,组成文档索引(相当于书本目录)。查询前先查询文档索引/目录,再获取对应文档。

索引不含重复词,中文检索系统中,索引大小有限,CPU可以通过索引定位到指定文档,查询速度非常快,查询速度基本不会随数据量的增加而增加

倒排索引技术常用于海量数据模糊检索,如百度贴吧、百度搜索引擎等。


什么是Lucene

Lucene是一个开放源代码的全文检索引擎工具包,由apache软件基金会支持和提供,它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构

Lucene的目的是为开发人员提供简单易用的全文检索工具,方便实现全文检索功能,或以此为基础建立起完整的全文检索引擎。


Lucene全文检索流程

绿色为索引过程,对要搜索的原始内容构建索引库,包括:获得文档、创建文档、分析文档和索引文档。 红色为搜索过程,从索引库中搜索内容,包括:查询接口、创建查询、执行查询和渲染结果。

索引流程

获得文档
爬虫获取互联网数据、JDBC获取数据库数据、IO流读取文档文件。

创建文档
建立索引前,需将原始内容创建成文档(Document),每一个文档有自己唯一标识ID,通过这个ID建立起词到文档的索引,所有文档组成文档集合。每个文档包括一个一个域/字段(Field),域中存储内容,key-value形式。

分析文档
将域中的内容进行分析,包括过滤、切分词、去停词、去特殊字符等,提取文档信息。

vivo X23 8GB+128GB 幻夜蓝 全网通4G手机

如elasticsearch的ik_max_word分词器:
vivo,x23,8GB,128GB,幻夜,幻夜蓝,全网,全网通,网通,4G,手机

索引文档
对所有文档分析得到的词汇单元汇总进行索引(有序排列),建立词汇到文档的索引关系。通过词汇查找文档,这种索引结构叫倒排索引结构。同一个词可能对应对个文档,多个文档有序存放在倒排表。

搜索流程

用户输入查询关键字执行搜索之前需要先构建一个查询对象,查询对象指定查询要查询的关键字、要搜索的Field文档域,查询对象生成具体地查询语法。
如搜索“华为手机”,创建查询对象 “name:华为 AND 手机”:表示搜索name中同时包含“华为”和“手机”的文档集合。


Lucene演示

索引过程

索引包括采集数据(从Mysql数据库读取数据),创建文档对象(原始数据转变为document对象),创建分词器、索引目录对象和输出流对象(使用标准分词器,中文按字分词),写入索引库。

由分词集合建立索引的过程在lucene底层实现。

索引演示

中文按字分词,建立每个文档包含字的索引。

OR的形式查询“华为手机”,返回包含任意四个字的并集。

搜索过程


Field域类型

文档域包含域名和域值,Field值即为要索引的内容,也就是要搜索的内容。

Field类数据类型是否分词是否索引是否存储说明
StringField(FieldName, FieldValue, Store.Yes)字符串NYY或N字符串域不分词,整个字符串作为索引,如订单号、身份证号等
FloatPoint(FieldName, FieldValue)Float型YYN浮点域分词且索引,不存储
IntPoint(FieldName, FieldValue)Interger型YYN整数域分词且索引,不存储
StoredField(FieldName, FieldValue)重载方法,支持多种类型NNY用于构建不同类型Field,不分析、不索引,但要Field存储在文档中
TextField(FieldName, FieldValue, Store.NO)或TextField(FieldName, reader)字符串或流YYY或N如果是Reader,lucene猜测内容较多,会采用Unstored策略

只有一个默认选项的类型不能选择,含或的类型才能选择。


是否分词(tokenized)

  • 是:对Field值分词,分词的目的是为了索引,索引的目的是为了查询,比如商品名称、商品描述等搜索内容丰富的域,用户需要通过关键字搜索,通过分词将语单元建立索引;
  • 否:不对Field值分词,比如商品id、订单号、身份证号等;

是否索引(indexed)

  • 是:进行索引,将Field分词后的词或整个Field值进行索引,存储到索引域,索引的目的是为了搜索,比如商品名称、商品描述需分析/分词后索引,订单号、身份证号不用分词也要索引,索引域将来都可以作为查询条件
  • 否:不索引。如图片路径,文件路径等,不用索引的域不支持查询

是否存储(stored)

  • 是:将Field值存储在文档域中,存储在文档域中的Field才能从document中获取,比如商品名称、订单号等,凡是需要从document中获取的field都需要存储,此外如商品链接、商品图片不需要索引和分词的域,如果需要从document中获取,也需要存储
  • 否:不存储,如商品描述比较大的域,如果需要返回不存储的字段,可以其他数据库获取

对商品的字段进行具体分析:

  • 商品id: StringField类型(不支持分词、默认索引),不分词、索引、存储(用于到其他数据库查询详细);
  • 商品名称: TextFieldle类型,分词、索引、存储;
  • 商品价格: IntPoint类型,分词(范围查询必须分词,底层算法实现)、索引、存储(配合StoredField实现存储);
  • 商品地址: StoredField类型,不分词、不索引、存储;
  • 商品分类: StringField类型,不分词(专有名词,可不分词)、索引、存储;
  • 商品品牌名: StringField类型,不分词(专有名词,可不分词)索引、存储

索引维护

主文档存储在关系型数据库,索引库用于索引文档,文档的修改操作发生在关系型数据库,比如修改商品价格。为同步关系型数据库修改的信息到索引库,需进行索引库的维护。 索引维护主要包含索引的增、删、改、查。


分析器(Analyzer)

分词,将document中指定域的value切分为一个一个的词;过滤,去除特殊字符、停词等,大写转小写,词形还原(复数转单数、过去式转现在式等)等。同一域在索引和搜索时需使用相同的分词器。

Lucene原生分析器

1. StandardAnalyzer
标准分词器,包括分词(中文按字分词)、标准过滤、大小写过滤、停词过滤等。TokenFilter是分词过滤器,负责对雨汇单元进行过滤。

2. WhitespaceAnalyzer
仅仅按空格切分,不支持中文。

3. SimpleAnalyzer
将除字母以外的符号全部去除,并且将所有字母变为小写,会把数字去除,不支持中文。

4. CJKAnalyzer(中日韩分词器)
对中文执行二分法(2-gram)分词,去掉空格、去掉标点符号。

第三方中文分词器

IK-analyzer,该分词器支持Lucene 4.10,支持用户扩展词典(专有名词)、停词词典(不建立索引的词)。


Lucene高级搜索

// 创建查询对象,默认查询name域
Analyzer analyzer = new StandrdAnalyzer();
QueryParser queryParser = new QueryParser("name", analyser);

//  并列查询,默认OR查询
Query query = queryParser .parse("华为 AND 手机");

// 价格范围查询
Query query = queryParser .parse("price:[1 TO 99999]");

// 组合查询,省略。。。

Lucene底层储存结构(高级)

存储结构(倒排索引)包含:索引和文档集合。索引相当于字典目录,文档集合相当于字典正文。

一个索引由多个Segment组成,多个段可以合并,以减少磁盘IO。段有写锁,避免多线程同时写。段的修改是将原数据删除,在段尾添加新数据。

词典的构建

倒排索引中的词典位于内存,数据结构有很多种,Lucene 3.0之前使用跳跃表结构,后换成了FST,各数据结构对比

数据结构优缺点
跳跃表占用内存小,对模糊查询支持不好
排列列表使用二分法查找,查询效率不平衡
字典树查询效率和字符长度有关,只适合英文字典
哈希表性能高,内存消耗大,几乎是原始数据的三倍
双数组字典树适合中文词典,内存占用小,很多分词工具均采用此种算法
有限状态转换器(Finite State Transducers, FST)Lucene 4有开源实现,并大量使用
B树磁盘索引,更新方便,但检索速度慢,多用于速度库

跳跃表原理

跳跃表是一种近似支持二分查找的有序链表,查询效率与跳表的级数有关,理想情况下查询平均时间复杂度为O(log n)。为什么不用红黑树而用跳表? 红黑树区间搜索性能低,跳表完美支持区间检索。

天下没有免费的午餐,跳跃是使用空间换时间,跳表的空间复杂度是O(2n)。

FST原理

Lucene现在采用的数据结构为FST,它的特点:

  • 优点: 它内存占用低(公用前缀),压缩率一般在3倍至20倍之间,模糊查询的支持率好,查询快;
  • 缺点: 结构复杂,输入要求有序,不易更新;

具体实现细节后面再研究。


Lucene优化(高级)

主要考虑优化索引创建效率和搜索效率。

解决大量磁盘IO

缓存区文档数:控制写入一个新的Segment前内存中保存的document的数目,设置较大数目可以加快建索引速度(批量写Segment),缓存文档数越多,对内存的消耗越大。

段文档数:设置N个文档合并为一个段。数值越大,建索引速度越快,搜索速度越慢,反之亦然。程序可利用并发机制在搜索时完成段的合并,因此段文档数越小,可利用的并发数可能越多。 实际应用过程中,应对程序进行不同值测试,选择最优的分段文档数。

选择合适的分词器

如IKAnalyzer分析器对中文支持好,但建索引速度和搜索速度都必StandardAnalyzer慢,因为需使用分词算法,而且得到的语汇数也会更多。

选择合适的位置存放索引库

文件系统、内存映射系统


Lucene相关度排序

Lucene对查询关键字和文档的相关度打分,得分高的就排在前面。具体地说,通过TF-IDF对搜索结果文档打分,假如查询语句被切分为5个词,以或的形式查询得到100篇文档,将每篇文档对5个词的TF-IDF值累加作为查询相关度得分,按分数逆序返回最终结果。

Lucene在多域检索时,可设定不同域的权重,影响最终的分数。

Lucence底层原理浅析
weixin_44876147的博客
07-21 1120
Lucence底层原理浅析 Lucence简介 Lucence是全Java实现的,前几年实现了开源,性能较高,而且支持分词、各种查询(正则、模糊、前缀)、关键词高亮等。 Lucence整体步骤 生成文档—>建索引库—>解析查询—>检索并返回 (1)原始数据即待索引文件,经过Tokenizer进行分词处理,去掉停用词(如"a",“the”,“an”,“啊”,“了"等),英文单词还需要Stemming和lemmatization使词汇成为词根形式(如"cars"变为"car”,“drove"
全文检索lucence(一)——基本原理
李黎敏 ——为优秀j2ee架构师而努力
05-30 7576
Lucence是java的一个全文检索的框架,
Luence组织结构
香辣虾虾
02-28 194
(1)Luence系统的组织结构 Luence最初是Apache软件基金会Jakarta项目组的一个子项目,是一个完全开放源码的全文检索工具包。 Lucene的系统结构具有强烈的面向对象特征。首先是定义了一个与平台无关的索引文件格式,其次通过抽象将系统的核心组成部分设计为抽象类,具体的平台实现部分设计为抽象类的实现,此外与具体平台相关的部分比如文件存储也封装为类,经过层层的面向对象式的处理,...
【2021最新版】Elasticsearch面试题总结(24道题含答案解析)
热门推荐
程序媛小琬的博客
05-11 3万+
文章目录1、Elasticsearch了解多少,说说你们公司ES的集群架构,索引数据大小,分片有多少,以及一些调优手段 。2、Elasticsearch的倒排索引是什么?3、Elasticsearch索引数据多了怎么办,如何调优,部署?4、Elasticsearch是如何实现master选举的?5、详细描述一下Elasticsearch索引文档的过程。6、详细描述一下Elasticsearch搜索的过程?7、Elasticsearch在部署时,对Linux的设置有哪些优化方法?8、lucence内部结构是什
Lucene总结二:Lucene的总体架构
haohaizi的博客
05-31 497
如下技术文章也是从我之前很久开的csdn账号上面迁移过来的 Lucene总的来说是: 一个高效的,可扩展的,全文检索库。 全部用Java实现,无须配置。 仅支持纯文本文件的索引(Indexing)和搜索(Search)。 不负责由其他格式的文件抽取纯文本文件,或从网络中抓取文件的过程。 在Lucene in action中,Lucene 的构架和过程如下图, 说明Lucene是有索引和搜索的两个过程,包含索引创建,索引,搜索三个要点。 让我们更细一些看Lucene的各组件: 被索引的
超系统学习Lucene全文检索技术视频教程
03-21
视频详细讲解,需要的小伙伴自行网盘下载,链接见附件,永久有效。 目前业界流行的ElasticSearch和Solr搜索...系统的学习Lucene全文检索技术,全面掌握搜索原理和底层知识,为学习其他应用层面搜索技术打下坚实的基础。
Lucene全文检索引擎工具包.rar
07-07
全文检索:将非结构化数据中的⼀部分信息提取出来,重新组织,使其变得具有⼀定结构,然后对此有⼀定结构的数据进行搜索,从而达到搜索相对较快的⽬的。这部分从非结构化数据中提取出的然后重新组织的信息,我们称之...
Lucene全文检索(一)
01-07
Lucene实现全文检索的流程 创建索引 获得文档 原始文档:要基于那些数据来进行搜索,那么这些数据就是原始文档。 搜索引擎:使用爬虫获得原始文档 站内搜索:数据库中的数据。 本地搜索:直接使用io流读取磁盘上的...
Lucene全文检索引擎
05-01
NULL 博文链接:https://1151461406.iteye.com/blog/2388343
基于Lucene全文检索引擎的应用研究
10-23
Lucene是一个强大的全文索引引擎工具包, 它的...介绍了一个高性能的全文检索引擎——Lucene开源系统,详细分析了Lucene的系统结构、全文索引机制,然后将其引入具体应用,给出了一个基于Lucene全文检索技术的具体实例。
Lucene 基本原理(二)总体架构设计
腊八粥
03-04 335
1.Lucene架构设计 Lucene架构设计针对开发者来说,Lucene最重要的两个部分: (1)Index Doucuments 索引 能够针对文件系统、数据库、网络爬虫等方式的输入数据,建立索引; 能够针对txt、world、Excel、pdf等多种格式的文件,建立索引; 建立索引的数据,包含结构化和非结构化的数据,都是建立索引的基础; (2)Search Index 搜索 ...
lucene中索引的内存结构
chuanyangwang的专栏
10-14 252
lucene倒排索引的内存结构_creater_X-CSDN博客_倒排索引存储结构
lucene倒排索引的内存结构
creater_X
09-02 2100
简介 lucene索引格式是个老生常谈的问题,网上也有一些资料,但是由于年代比较古老(大都是基于3.x或者4.x的版本),和现有代码较难对上,这里基于lucene6.6重新讲解下,也帮助自己理解和记忆。 基本概念 这些信息很容易理解,看代码的时候也很清晰。 lucene在进行索引时,为了加速索引进程,会同时多线程同时进行索引,每一个线程在flush后都是一个完整的索引段。 对...
全文检索框架
weixin_30662109的博客
08-04 136
第一步:安装全文检索框架django-haystack pip3 install django-haystack 第二步:安装搜索引擎 pip3 install whoosh 第三步:在settings配置app INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth',...
全文检索服务 _ ElasticSearch
LiLi的博客
11-11 4526
一、Elasticsearch介绍 Elasticsearch是一个全文检索服务器 1 全文检索 全文检索是一种非结构化数据的搜索方式。 结构化数据:指具有固定格式固定长度的数据,如数据库中的字段。 非结构化数据:指格式和长度不固定的数据,如电商网站的商品详情。 结构化数据一般存入数据库,使用sql语句即可快速查询。但由于非结构化数据的数据量大且格式不固定,我们需要采用全文检索的方式进行搜索。全文检索通过建立倒排索引加快搜索效率。 2 倒排索引 索引:将数据中的一部分信息提取出来,重新组织成一定
搜索引擎和知识图谱那些事 (上).基础篇
weixin_34195546的博客
07-16 2481
这是一篇基础性文章,主要介绍搜索引擎和知识图谱的一些原理、发展经历和应用等知识。希望文章对你有所帮助~如果有错误或不足之处,还请海涵。(参考资料见后) 一. 搜索引擎 (一).搜索引擎的四个时代 根据张俊林大神的《这就是搜索引擎》这本书中描述(推荐大家阅读),搜索引擎从采取的技术划分为4个时代: 1.史前...
Lucene的总体结构
oklinsong的专栏
10-10 470
Lucene 的构架和过程如下图, 说明Lucene是有索引和搜索的两个过程. 让我们更细一些看Lucene的各组件: 被索引的文档用Document对象表示。 IndexWriter通过函数addDocument将文档添加到索引中,实现创建索引的过程。 Lucene的索引是应用反向索引。 当用户有请求时,Query代表用户的查询语句。 IndexSearcher通过函数sear
lucene 全文检索引擎的架构
weixin_30387423的博客
05-21 86
Lucene是apache软件基金会4 jakarta项目组的一个子项目,是一个开放源代码的全文检索引擎工具包,但它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,部分文本分析引擎(英文与德文两种西方语言)。Lucene的目的是为软件开发人员提供一个简单易用的工具包,以方便的在目标系统中实现全文检索的功能,或者是以此为基础建立起完整的全文检索引擎。Luc...
Lucene全文搜索原理与使用
走在设计的道路上的博客
05-20 2万+
本文中主要是对于Lucene全文搜索的基础原理进行简单的分析,以及Lucene实现全文搜索的流程,之后就是Lucene在Java中的最简单使用:创建索引,查询索引库; 本文中使用的Lucene主要是4.10.3和6.0.0,两个版本的原理相同,但是API的使用并不相同; 1、结构化数据与非结构化数据 2、非结构化数据搜索 3、全文搜索 4、搜索如何实现 5、Lucene实现全文搜索流程
lucene mysql全文检索
最新发布
08-16
使用Lucene实现对MySQL数据表的全文检索是一种可行的方案。Lucene是一套开源的全文检索和搜寻的程式库,它提供了一个简单但强大的应用程式接口,能够实现全文索引和搜寻的功能。在Java开发环境中,Lucene是一个成熟的免费开源工具,被广泛应用于信息检索领域。 全文检索是一种针对非结构化数据的检索方法,对于像磁盘上的文件、网站资源等非结构化数据,无法使用SQL语句进行查询,因此需要使用全文检索法。全文检索法将非结构化数据中的一部分信息提取出来进行组织,形成索引,然后根据索引快速定位到要查找的信息。Lucene可以实现全文检索的功能,它是Apache软件基金会支持和提供的工具包。 使用Lucene实现全文检索的流程如下: 1. 创建索引:首先获取要进行检索的文档,可以是磁盘文件或网站资源等,然后构建文档对象,包括多个域,如文件名称、文件路径、文件大小、文件内容等。接下来对文档进行分词,将分词结果创建为索引并添加到索引库中。 2. 索引搜索:创建查询对象,执行查询并渲染结果。在倒排索引词典表中查找对应搜索词的索引,然后找到索引所链接的文档。例如,搜索语法为"fileName:lucene"表示搜索文件名中包含Lucene的文档。 要使用Lucene实现全文检索,首先需要下载和配置Lucene。你可以从官方网站或其他可信的资源下载Lucene的安装包,并按照相应的指南进行配置。然后,你可以使用Lucene提供的API来实现全文检索功能,根据具体需求进行代码编写和调用。 总之,Lucene是一种强大的全文检索工具,可以帮助你在MySQL数据表中实现全文检索功能。你可以通过学习和使用Lucene的API来了解更多关于Lucene的功能和用法,并根据具体需求进行相应的实现。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [【springboot微服务】Lucence实现Mysql全文检索](https://blog.csdn.net/zhangcongyi420/article/details/129940816)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [【Lucene&Solr】Lucene实现全文检索](https://blog.csdn.net/qq_43705275/article/details/107229299)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • Numpy数组的取整及类型转换:ceil, floor, trunc, rint, around等 47266
  • Numpy数组的索引与切片:取数组的特定行列 41613
  • 层标准化详解(Layer Normalization) 41282
  • 朴素贝叶斯法原理及其python实现 9414
  • 数值优化之方向导数、梯度、牛顿法、SGD、Adagrad、RMSprop、Adam 8786

分类专栏

  • 自然语言处理 19篇
  • tensorflow 8篇
  • 随笔 2篇
  • sklearn 2篇
  • 机器学习 23篇
  • 线性代数与矩阵分析 1篇
  • 深度学习 31篇
  • 数据结构与算法 3篇
  • 概率论与数理统计 2篇
  • 计算机系统
  • 最优化理论 5篇
  • 高等数学 5篇
  • python 9篇

最新评论

  • NLP预训练模型:RoBERTa、ELECTRA、DeBERTa和DeBERTaV3

    CSDN-Ada助手: 恭喜你这篇博客进入【CSDN每天值得看】榜单,全部的排名请看 https://bbs.csdn.net/topics/613899342。

  • AdaBoost与指数损失

    z樾: 楼主 ,有一个疑问,其中可将w (t)视为第t次迭代每个观测的权重。这一部分是规定的吗

  • 梯度提升决策树GBDT及其sklearn实践

    小凯813: 你的iris数据是UCI原数据么,可以看一下你的数据么

  • GELU激活函数: 高斯误差线性单元

    柳折遥~: 假设 符合这种特征才用的。。

  • 关系抽取之分段卷积神经网络(PCNN)

    MrSunahong: 作者你好,你代码里用到的数据集具体是哪一个NYT数据集?

大家在看

  • Linux常用命令汇总 911
  • SpringMVC执行流程原理及源码解读 200

最新文章

  • Visual预训练模型:BEiT、BEiT v2
  • NLP预训练模型:RoBERTa、ELECTRA、DeBERTa和DeBERTaV3
  • Layout系列模型(LayoutLM,LayoutLMv2,LayoutXLM)
2023年2篇
2022年1篇
2021年2篇
2020年60篇
2019年1篇
2018年20篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

聚圣源东北小饭店起名奶茶店铺起名字免费起名打分100分周易起名的姓名测试微信起名什么最好人才共享平台起名晨间日记的奇迹南湖公园二手房渣打银行信用卡王一什么男孩起名2018起名家字和什么字好雪豹在线观看党风廉政建设责任制郑州9人被问责书画销售耳东兔子中业兴融起个园林公司名字推荐吃亏是福打一生肖给网络起名字荣辱观教育起名发出生 取名起名大全羊肉店铺起名0xc000000f上古卷轴5爱的实验室ar技术是指什么简单爱心所爱世界也变得大了起来桌面快捷键姓余起名字的淀粉肠小王子日销售额涨超10倍罗斯否认插足凯特王妃婚姻让美丽中国“从细节出发”清明节放假3天调休1天男孩疑遭霸凌 家长讨说法被踢出群国产伟哥去年销售近13亿网友建议重庆地铁不准乘客携带菜筐雅江山火三名扑火人员牺牲系谣言代拍被何赛飞拿着魔杖追着打月嫂回应掌掴婴儿是在赶虫子山西高速一大巴发生事故 已致13死高中生被打伤下体休学 邯郸通报李梦为奥运任务婉拒WNBA邀请19岁小伙救下5人后溺亡 多方发声王树国3次鞠躬告别西交大师生单亲妈妈陷入热恋 14岁儿子报警315晚会后胖东来又人满为患了倪萍分享减重40斤方法王楚钦登顶三项第一今日春分两大学生合买彩票中奖一人不认账张家界的山上“长”满了韩国人?周杰伦一审败诉网易房客欠租失踪 房东直发愁男子持台球杆殴打2名女店员被抓男子被猫抓伤后确诊“猫抓病”“重生之我在北大当嫡校长”槽头肉企业被曝光前生意红火男孩8年未见母亲被告知被遗忘恒大被罚41.75亿到底怎么缴网友洛杉矶偶遇贾玲杨倩无缘巴黎奥运张立群任西安交通大学校长黑马情侣提车了西双版纳热带植物园回应蜉蝣大爆发妈妈回应孩子在校撞护栏坠楼考生莫言也上北大硕士复试名单了韩国首次吊销离岗医生执照奥巴马现身唐宁街 黑色着装引猜测沈阳一轿车冲入人行道致3死2伤阿根廷将发行1万与2万面值的纸币外国人感慨凌晨的中国很安全男子被流浪猫绊倒 投喂者赔24万手机成瘾是影响睡眠质量重要因素春分“立蛋”成功率更高?胖东来员工每周单休无小长假“开封王婆”爆火:促成四五十对专家建议不必谈骨泥色变浙江一高校内汽车冲撞行人 多人受伤许家印被限制高消费

聚圣源 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化