博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用Java8实现自己的个性化搜索引擎
阅读量:5923 次
发布时间:2019-06-19

本文共 707 字,大约阅读时间需要 2 分钟。

hot3.png

需要对249本软件著作实现句子级别全文检索,这些著作均为PDF文件,不使用现有的框架如lucene,自己实现的方法如下:

1、从PDF文件中提取文本,这里的重点是如何最大可能地还原文本。提取之后的文本,一个句子一行保存为文本文件。

2、将所有文本文件合并为一个单一的文本文件,这样,每一个句子就有一个唯一行号

3、对每一行文本进行分词,建立倒排表,倒排表的格式为:词=包含该词的总行数N=行号1|行号2|行号3|行号N......,如下的例子表示所有文本中,包含ysc的有12行,分别是......:

ysc=12=41883|134145|199585|320658|320661|332585|333873|379773|379775|453341|476179|488165

4、优化倒排表,减少索引文件的磁盘和内存占用,将行号排序,存储递增值。比如如下倒排表:

ysc=12=41883|134145|199585|320658|320661|332585|333873|379773|379775|453341|476179|488165

可优化为:

ysc=12=41883|92262|65440|121073|3|11924|1288|45900|2|73566|22838|11986

5、处理单一检索词,直接读取倒排表,然后处理递增存储的行号。

6、处理多个检索词,合并多个单一检索词的结果,取交集

7、根据检索到的行号,从第2步建立的单一的文本文件中获取句子。

实现代码如下:

1、

2、

3、

转载于:https://my.oschina.net/apdplat/blog/396193

你可能感兴趣的文章
引入间接隔离变化(三)
查看>>
统一沟通-技巧-4-让国内域名提供商“提供”SRV记录
查看>>
cocos2d-x 3.0事件机制及用户输入
查看>>
比亚迪速锐F3专用夏季座套 夏天坐垫 四季坐套
查看>>
C++ 数字转换为string类型
查看>>
程序员全国不同地区,微信(面试 招聘)群。
查看>>
【干货】界面控件DevExtreme视频教程大汇总!
查看>>
闭包 !if(){}.call()
查看>>
python MySQLdb安装和使用
查看>>
Java小细节
查看>>
poj - 1860 Currency Exchange
查看>>
chgrp命令
查看>>
Java集合框架GS Collections具体解释
查看>>
洛谷 P2486 BZOJ 2243 [SDOI2011]染色
查看>>
linux 笔记本的温度提示
查看>>
(转)DOTA新版地图6.78发布:大幅改动 增两位新英雄
查看>>
工欲善其事必先利其器SecureCRT+VMware® Workstation_学习笔记
查看>>
文件和目录权限chmod,更改所有者和所属组chown,umask,隐藏权限lsattr/chattr
查看>>
阿里PB级Kubernetes日志平台建设实践
查看>>
怎么把无线由器限
查看>>