导航:首页 > 编程语言 > 倒排表设计python

倒排表设计python

发布时间:2024-10-24 21:01:51

㈠ Lucene实战的目录

目录
第1部分Lucene核心
第1章初识Lucene 3
1.1应对信息爆炸 4
1.2Lucene是什么 5
1.2.1Lucene能做些什么 6
1.2.2Lucene的历史 7
1.3Lucene和搜索程序组件 9
1.3.1索引组件 10
1.3.2搜索组件 13
1.3.3搜索程序的其他模块 16
1.3.4Lucene与应用程序的整合点 18
1.4Lucene实战:程序示例 18
1.4.1建立索引 19
1.4.2搜索索引 22
1.5理解索引过程的核心类 25
1.5.1IndexWriter 25
1.5.2Directory 25
1.5.3Analyzer 26
1.5.4Document 26
1.5.5Field 27
1.6理解搜索过程的核心类 27
1.6.1IndexSearcher 27
1.6.2Term 28
1.6.3Query 28
1.6.4TermQuery 28
1.6.5TopDocs 29
1.7小结 29
第2章构建索引30
2.1Lucene如何对搜索内容进行建模 31
2.1.1文档和域 31
2.1.2灵活的架构 32
2.1.3反向规格化(Denormalization) 32
2.2理解索引过程 33
2.2.1提取文本和创建文档 33
2.2.2分析文档 34
2.2.3向索引添加文档 34
2.3基本索引操作 35
2.3.1向索引添加文档 35
2.3.2删除索引中的文档 38
2.3.3更新索引中的文档 39
2.4域选项 41
2.4.1域索引选项 41
2.4.2域存储选项 42
2.4.3域的项向量选项 42
2.4.4Reader、TokenStream和byte[ ]域值 42
2.4.5域选项组合 43
2.4.6域排序选项 44
2.4.7多值域 44
2.5对文档和域进行加权操作 45
2.5.1文档加权操作 45
2.5.2域加权操作 46
2.5.3加权基准(Norms) 47
2.6索引数字、日期和时间 48
2.6.1索引数字 48
2.6.2索引日期和时间 49
2.7域截取(Field truncation) 50
2.8近实时搜索(Near-real-time search) 51
2.9优化索引 51
2.10其他Directory子类 52
2.11并发、线程安全及锁机制 55
2.11.1线程安全和多虚拟机安全 55
2.11.2通过远程文件系统访问索引 56
2.11.3索引锁机制 57
2.12调试索引 59
2.13高级索引概念 60
2.13.1用IndexReader删除文档 61
2.13.2回收被删除文档所使用过的磁盘空间 62
2.13.3缓冲和刷新 62
2.13.4索引提交 63
2.13.5ACID事务和索引连续性 65
2.13.6合并段 66
2.14小结 68
第3章为应用程序添加搜索功能70
3.1实现简单的搜索功能 71
3.1.1对特定项的搜索 72
3.1.2解析用户输入的查询表达式:QueryParser 73
3.2使用IndexSearcher类 76
3.2.1创建IndexSearcher类 76
3.2.2实现搜索功能 78
3.2.3使用TopDocs类 78
3.2.4搜索结果分页 79
3.2.5近实时搜索 79
3.3理解Lucene的评分机制 81
3.3.1Lucene如何评分 81
3.3.2使用explain()理解搜索结果评分 83
3.4Lucene的多样化查询 84
3.4.1通过项进行搜索:TermQuery类 85
3.4.2在指定的项范围内搜索:TermRangeQuery类 86
3.4.3在指定的数字范围内搜索:NumericRangeQuery类 87
3.4.4通过字符串搜索:PrefixQuery类 88
3.4.5组合查询:BooleanQuery类 88
3.4.6通过短语搜索:PhraseQuery类 91
3.4.7通配符查询:WildcardQuery类 93
3.4.8搜索类似项:FuzzyQuery类 94
3.4.9匹配所有文档:MatchAllDocsQuery类 95
3.5解析查询表达式:QueryParser 96
3.5.1Query.toString方法 97
3.5.2TermQuery 97
3.5.3项范围查询 98
3.5.4数值范围搜索和日期范围搜索 99
3.5.5前缀查询和通配符查询 99
3.5.6布尔操作符 100
3.5.7短语查询 100
3.5.8模糊查询 101
3.5.9MatchAllDocsQuery 102
3.5.10分组查询 102
3.5.11域选择 103
3.5.12为子查询设置加权 103
3.5.13是否一定要使用QueryParse 103
3.6小结 104
第4章Lucene的分析过程 105
4.1使用分析器 106
4.1.1索引过程中的分析 107
4.1.2QueryParser分析 109
4.1.3解析vs分析:分析器何时不再适用 109
4.2剖析分析器 110
4.2.1语汇单元的组成 111
4.2.2语汇单元流揭秘 112
4.2.3观察分析器 115
4.2.4语汇单元过滤器:过滤顺序的重要性 119
4.3使用内置分析器 121
4.3.1StopAnalyzer 122
4.3.2StandardAnalyzer 122
4.3.3应当采用哪种核心分析器 123
4.4近音词查询 123
4.5同义词、别名和其他表示相同意义的词 126
4.5.1创建SynonymAnalyzer 127
4.5.2显示语汇单元的位置 131
4.6词干分析 132
4.6.1StopFilter保留空位 133
4.6.2合并词干操作和停用词移除操作 134
4.7域分析 134
4.7.1多值域分析 135
4.7.2特定域分析 135
4.7.3搜索未被分析的域 136
4.8语言分析 139
4.8.1Unicode与字符编码 139
4.8.2非英语语种分析 140
4.8.3字符规范化处理 140
4.8.4亚洲语种分析 141
4.8.5有关非英语语种分析的其他问题 143
4.9Nutch分析 144
4.10小结 146
第5章高级搜索技术147
5.1Lucene域缓存 148
5.1.1为所有文档加载域值 149
5.1.2段对应的reader 149
5.2对搜索结果进行排序 150
5.2.1根据域值进行排序 150
5.2.2按照相关性进行排序 153
5.2.3按照索引顺序进行排序 154
5.2.4通过域进行排序 154
5.2.5倒排序 155
5.2.6通过多个域进行排序 156
5.2.7为排序域选择类型 157
5.2.8使用非默认的locale方式进行排序 157
5.3使用MultiPhraseQuery 158
5.4针对多个域的一次性查询 160
5.5跨度查询 162
5.5.1跨度查询的构建模块:SpanTermQuery 165
5.5.2在域的起点查找跨度 166
5.5.3彼此相邻的跨度 167
5.5.4在匹配结果中排除重叠的跨度 169
5.5.5SpanOrQuery类 170
5.5.6SpanQuery类和QueryParser类 171
5.6搜索过滤 172
5.6.1TermRangeFilter 173
5.6.2NumericRangeFilter 174
5.6.3FieldCacheRangeFilter 174
5.6.4特定项过滤 174
5.6.5使用QueryWrapperFilter类 175
5.6.6使用SpanQueryFilter类 175
5.6.7安全过滤器 176
5.6.8使用BooleanQuery类进行过滤 177
5.6.9PrefixFilter 178
5.6.10缓存过滤结果 178
5.6.11将filter封装成query 179
5.6.12对过滤器进行过滤 179
5.6.13非Lucene内置的过滤器 180
5.7使用功能查询实现自定义评分 180
5.7.1功能查询的相关类 180
5.7.2使用功能查询对最近修改过的文档进行加权 182
5.8针对多索引的搜索 184
5.8.1使用MultiSearch类 184
5.8.2使用ParallelMultiSearcher进行多线程搜索 186
5.9使用项向量 186
5.9.1查找相似书籍 187
5.9.2它属于哪个类别 190
5.9.3TermVectorMapper类 193
5.10使用FieldSelector加载域 194
5.11停止较慢的搜索 195
5.12小结 196
第6章扩展搜索198
6.1使用自定义排序方法 199
6.1.1针对地理位置排序方式进行文档索引 199
6.1.2实现自定义的地理位置排序方式 200
6.1.3访问自定义排序中的值 203
6.2开发自定义的Collector 204
6.2.1Collector基类 205
6.2.2自定义Collector:BookLinkCollector 206
6.2.3AllDocCollector类 207
6.3扩展QueryParser类 208
6.3.1自定义QueryParser的行为 208
6.3.2禁用模糊查询和通配符查询 209
6.3.3处理数值域的范围查询 210
6.3.4处理日期范围 211
6.3.5对已排序短语进行查询 213
6.4自定义过滤器 215
6.4.1实现自定义过滤器 215
6.4.2搜索期间使用自定义过滤器 216
6.4.3另一种选择:FilterQuery类 217
6.5有效载荷(Payloads) 218
6.5.1分析期间生成有效载荷 219
6.5.2搜索期间使用有效载荷 220
6.5.3有效载荷和跨度查询 223
6.5.4通过TermPositions来检索有效载荷 223
6.6小结 223
第2部分Lucene应用
第7章使用Tika提取文本227
7.1Tika是什么 228
7.2Tika的逻辑设计和API 230
7.3安装Tika 231
7.4Tika的内置文本提取工具 232
7.5编程实现文本提取 234
7.5.1索引Lucene文档 234
7.5.2Tika工具类 237
7.5.3选择自定义分析器 238
7.6Tika的局限 238
7.7索引自定义的XML文件 239
7.7.1使用SAX进行解析 239
7.7.2使用Apache Commons Digester进行解析和索引 242
7.8其他选择 244
7.9小结 245
第8章Lucene基本扩展246
8.1Luke:Lucene的索引工具箱 247
8.1.1Overview标签页:索引的全局视图 248
8.1.2浏览文档 249
8.1.3使用QueryParser进行搜索 251
8.1.4Files and Plugins标签页 252
8.2分析器、语汇单元器和语汇单元过滤器 253
8.2.1SnowballAnalyzer 255
8.2.2Ngram过滤器 256
8.2.3Shingle过滤器 258
8.2.4获取捐赠分析器 258
8.3高亮显示查询项 259
8.3.1高亮显示模块 259
8.3.2独立的高亮显示示例 262
8.3.3使用CSS进行高亮显示处理 263
8.3.4高亮显示搜索结果 264
8.4FastVector Highlighter类 266
8.5拼写检查 269
8.5.1生成提示列表 269
8.5.2选择最佳提示 271
8.5.3向用户展示搜索结果 272
8.5.4一些加强拼写检查的考虑 273
8.6引人注目的查询扩展功能 274
8.6.1MoreLikeThis 274
8.6.2FuzzyLikeThisQuery 275
8.6.3BoostingQuery 275
8.6.4TermsFilter 276
8.6.5DuplicateFilter 276
8.6.6RegexQuery 276
8.7构建软件捐赠模块(contrib mole) 277
8.7.1源代码获取方式 277
8.7.2contrib目录的Ant插件 277
8.8小结 278
第9章Lucene高级扩展279
9.1链式过滤器 280
9.2使用Berkeley DB存储索引 282
9.3WordNet同义词 284
9.3.1建立同义词索引 285
9.3.2将WordNet同义词链接到分析器中 287
9.4基于内存的快速索引 289
9.5XML QueryParser:超出“one box”的搜索接口 289
9.5.1使用XmlQueryParser 291
9.5.2扩展XML查询语法 295
9.6外围查询语言 296
9.7Spatial Lucene 298
9.7.1索引空间数据 299
9.7.2搜索空间数据 302
9.7.3Spatial Lucene的性能特点 304
9.8远程进行多索引搜索 306
9.9灵活的QueryParser 309
9.10其他内容 312
9.11小结 313
第10章其他编程语言使用Lucene314
10.1移植入门 315
10.1.1移植取舍 316
10.1.2选择合适的移植版本 317
10.2CLucene(C++) 317
10.2.1移植目的 318
10.2.2API和索引兼容 319
10.2.3支持的平台 321
10.2.4当前情况以及未来展望 321
10.3Lucene-Net(C#和其他.NET编程语言) 321
10.3.1API兼容 323
10.3.2索引兼容 324
10.4KinoSearch和Lucy(Perl) 324
10.4.1KinoSearch 325
10.4.2Lucy 327
10.4.3其他Perl选项 327
10.5Ferret(Ruby) 328
10.6PHP 329
10.6.1Zend Framework 329
10.6.2PHP Bridge 330
10.7PyLucene(python) 330
10.7.1API兼容 332
10.7.2其他Python选项 332
10.8Solr(包含多种编程语言) 332
10.9小结 334
第11章Lucene管理和性能调优335
11.1性能调优 336
11.1.1简单的性能调优步骤 337
11.1.2测试方法 338
11.1.3索引-搜索时延调优 339
11.1.4索引操作吞吐量调优 340
11.1.5搜索时延和搜索吞吐量调优 344
11.2多线程和并行处理 346
11.2.1使用多线程进行索引操作 347
11.2.2使用多线程进行搜索操作 351
11.3资源消耗管理 354
11.3.1磁盘空间管理 354
11.3.2文件描述符管理 357
11.3.3内存管理 361
11.4热备份索引 364
11.4.1创建索引备份 365
11.4.2恢复索引 366
11.5常见错误 367
11.5.1索引损坏 367
11.5.2修复索引 369
11.6小结 369
第3部分案例分析
第12章案例分析1:Krugle373
12.1Krugle介绍 374
12.2应用架构 375
12.3搜索性能 376
12.4源代码解析 377
12.5子串搜索 378
12.6查询VS搜索 381
12.7改进空间 382
12.7.1FieldCache内存使用 382
12.7.2合并索引 382
12.8小结 383
第13章案例分析2:SIREn384
13.1SIREn介绍 385
13.2SIREn优势 385
13.2.1通过所有域进行搜索 387
13.2.2一种高效词典 388
13.2.3可变域 388
13.2.4对多值域的高效处理 388
13.3使用SIREn索引实体 388
13.3.1数据模型 389
13.3.2实现问题 389
13.3.3索引概要 390
13.3.4索引前的数据准备 390
13.4使用SIREn搜索实体 392
13.4.1搜索内容 392
13.4.2根据单元限制搜索范围 393
13.4.3将单元合并成元组 393
13.4.4针对实体描述进行查询 394
13.5在Solr中集成SIREn 394
13.6Benchmark 395
13.7小结 397
第14章案例分析3:LinkedIn398
14.1使用Bobo Browse进行分组搜索 398
14.1.1Bobo Browse的设计 400
14.1.2深层次分组搜索 403
14.2使用Zoie进行实时搜索 405
14.2.1Zoie架构 406
14.2.2实时VS近实时 409
14.2.3文档与索引请求 411
14.2.4自定义IndexReaders 411
14.2.5与Lucene的近实时搜索进行比较 412
14.2.6分布式搜索 413
14.3小结 415
附录A安装Lucene416
A.1二进制文件安装 416
A.2运行命令行演示程序 417
A.3运行Web应用演示程序 418
A.4编译源代码 419
A.5排错 420
附录BLucene索引格式421
B.1逻辑索引视图 421
B.2关于索引结构 422
B.2.1理解多文件索引结构 422
B.2.2理解复合索引结构 425
B.2.3转换索引结构 426
B.3倒排索引 427
B.4小结 430
附录CLucene/contrib benchmark431
C.1运行测试脚本 432
C.2测试脚本的组成部分 435
C.2.1内容源和文档生成器 438
C.2.2查询生成器 439
C.3控制结构 439
C.4内置任务 441
C.4.1建立和使用行文件 445
C.4.2内置报表任务 446
C.5评估搜索质量 446
C.6出错处理 449
C.7小结 449
附录D资源450
D.1Lucene知识库 450
D.2国际化 450
D.3语言探测 451
D.4项向量 451
D.5Lucene移植版本 451
D.6案例分析 452
D.7其他 452
D.8信息检索软件 452
D.9Doug Cutting的着作 453
D.9.1会议论文 453
D.9.2美国专利 454

㈡ 大数据专业成热门,该如何转行做大数据分析师

那我就转载一篇别人转行做数据分析的经验贴给题主吧:

亲爱的各位加米谷学院的老师和同学们好,首先非常感谢大家在17年9月到18年3月份5个月时间的陪伴,以及张老师和曾老师在我学习期间的耐心辅导。在大数据培训的道路上,正是因为有你们的辛勤付出与陪伴,才让我在大数据职业道路上有了今天我很满意的薪资待遇。再次谢谢你们!

在数据分析挖掘培训的过程中给我印象最深就是张老师,张老师的课讲的很清楚,尤其是PPT图解理论,让我这样的0基础学员能够理解到位,不愧是国家大数据标准组的成员。虽然只有短短五个月的学习时间,但是对于我个人来说收获非常大,不止让我从一个小白成功入行,并成功面试到张老师推荐的公司,拿到了我非常满意的薪水。

张老师希望我可以给后面的学弟学妹们分享一点学习经验,学习这件事大家都不陌生,大家都是经历过十几年的学习生涯。尤其是转行0基础学习大数据的同学,对大数据行业了解的也一定很清楚了,才会决定来进行大数据培训。下面我只说5个方面,后面的学弟学妹可以从中作参考,也希望对你们有帮助。

1、兴趣是最好的老师,既然决定转好从0基础学习大数据,那你一定要从心里爱上它,只有你真正的上心了,才能有动力去学好它。

2、多看,课前预习是少不了的,课前老师都会把当天讲的课件提前发给你,一定要抽出时间先认真看一下,否则,你会发现到时候老师讲的内容你接受起来非常吃力。

3、多问,如果你是一个0基础学习大数据,之前没有任何编程基础,遇到问题一定要多问,第一时间问老师,不要碍着面子死撑,一方面可以锻炼你的沟通能力,是否能用尽量通俗的话语让老师明白你遇到的问题所在(对你以后面试很有帮助),另一方面现在的学习成果也影响着以后的薪资待遇。

4、多练,加米谷学院每个阶段的实训项目都是很有针对性的,全部是来自真实企业中真实的项目,现在多练习对于以后的面试以及工作经验都会非常的有帮助。

5、勤奋,这个说起来很简单,人都是有惰性的,就像我们上学时候一样,同样一个班级,老师教的东西也都一样,为什么有的学习好,有的学习不好?数据分析培训也一样,毕业之后为什么有的薪资可以拿到18K,有的却只有几千?这跟自己的勤奋程度是成正比的,每个人请找到自己的勤奋点,加油!

㈢ [内附完整源码和文档] 基于python的新闻检索系统

1 系统介绍
1.1 系统需求
新闻检索系统:定向采集不少于 4 个中文社会新闻网站或频道,实现这些网站新闻信息及评论信息的自动爬取、抽取、索引和检索。本项目未使用 lucene,Goose 等成熟开源框架。

1.2 系统思路与框架
本系统总体的实现思路如图 1 所示:

一个完整的搜索系统主要的步骤是:

对新闻网页进行爬虫得到语料库

抽取新闻的主体内容,得到结构化的 xml 数据

内存式单遍扫描索引构建方法构建倒排索引,供检索模块使用

用户输入查询,得到相关文档返回给用户

2 设计方案
2.1 新闻爬取
2.1.1 算法简述
该模块针对搜狐,网易,腾讯三大主流新闻网站及官方的参考消息网站进行了新闻获取。并基于其网站结构,设计了不同的爬取模式。由于网站架构两两相似,以下选取两种类型的典型代表进行介绍:

(1)搜狐新闻
搜狐新闻除正常主页外,存在隐藏的列表式新闻页 , 如 http://news.sohu.com/1/0903/62/subject212846206.shtml 。

(2)网易新闻
可以将网易新闻及腾讯新闻归结为一般类型的新闻主页,我们采用了自新闻主页开始的广度优先的递归爬取策略。注意到新闻的正文页往往是静态网页.html,因此,我们将网页中出现的所有以.html 结尾的网页的 URL 均记录下来,在爬取到一定量时,进行一次去重。

对于一些不是新闻的错分网页,容错处理即通过检查新闻正文标签

时会被剔除。

新闻正文页中我们重点关注内容,时间,评论获取。

2.1.2 创新点
实现了对新闻网页动态加载的评论进行爬取,如搜狐新闻评论爬取

未借助开源新闻爬取工具,自己实现了对新闻标题,正文,时间,评论内容,评论数目的高效爬取

2.2 索引构建
分词,我们借助开源的 jieba 中文分词组件来完成,jieba 分词能够将一个中文句子切成一个个词项,这样就可以统计 tf, df 了

去停用词,去停词的步骤在 jieba 分词之后完成

倒排记录表存储,词典用 B-树或 hash 存储,倒排记录表用邻接链表存储方式,这样能大大减少存储空间

倒排索引构建算法使用内存式单遍扫描索引构建方法(SPIMI),就是依次对每篇新闻进行分词,如果出现新的词项则插入到词典中,否则将该文档的信息追加到词项对应的倒排记录表中。

2.3 检索模块
2.3.1 检索模式
(1)关键词检索
查询即根据用户输入的关键字,返回其相应的新闻。首先根据用户的查询进行 jieba 分词,记录分词后词项的数量以字典形式进行存储。

完整的源码和详细的文档,上传到了 WRITE-BUG技术共享平台 上,需要的请自取:

https://www.write-bug.com/article/3122.html

阅读全文

与倒排表设计python相关的资料

热点内容
小程序编译蓝屏 浏览:943
程序员赛车的gif 浏览:407
购买新车能用到什么app 浏览:771
阿里算法工程师待遇 浏览:401
java的jar命令 浏览:687
编程渣的人该怎么办 浏览:714
修改器显示文件夹为空的 浏览:856
单片机按钮实现播放音乐 浏览:972
音量皮肤怎么设置的安卓 浏览:320
编译目录无效 浏览:967
java韩顺平下载 浏览:857
用python抓取基金净值 浏览:265
涡旋压缩机的优点 浏览:54
加密提取码视频 浏览:108
app上地图用什么开发的 浏览:377
python屏幕截图选择屏幕1或者2 浏览:468
centos7内网中安装编译器 浏览:40
手机下载电影无法解压 浏览:96
eos程序员教程 浏览:967
法语中的命令式有几种变位 浏览:620