当前位置:首页 > 开发 > 开源软件 > 正文

使用Java8实现自己的个性化搜索引擎

发表于: 2015-04-05   作者:yangshangchuan   来源:转载   浏览:
摘要: 需要对249本软件著作实现句子级别全文检索,这些著作均为PDF文件,不使用现有的框架如lucene,自己实现的方法如下: 1、从PDF文件中提取文本,这里的重点是如何最大可能地还原文本。提取之后的文本,一个句子一行保存为文本文件。 2、将所有文本文件合并为一个单一的文本文件,这样,每一个句子就有一个唯一行号。 3、对每一行文本进行分词,建立倒排表,倒排表的格式为:词=包含该词的总行数N=行号

需要对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、文本搜索

 

249本软件著作

 

 

 

 

 

 

 

 

 

 

使用Java8实现自己的个性化搜索引擎

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
一、问题描述 WEB项目在继承Spring时候,默认的配置的是ContextLoaderListener <context-param&g
使用Xapian搭建自己的搜索引擎 由于Clucene对中文的支持很不给力,所以我决定用Xapian,Xapian里的所
上一篇中提到对于Zip包的解压和压缩需要借助Ant 实现,我经过参考了其他的资料,整理后并加上了一些
  在网页中,我们可以用CSS的font-family属性来定义字体,然而定义的字体在用户的电脑上能否正确
今天下了JDK 8 EA 尝尝鲜 摸了好久才摸懂 一些地方 写写文章分享下经验 如有说错欢迎打脸 reduce的
Win7界面很漂亮一直是公认的,特别是Aero效果,玻璃透明的感觉爱不释手。自己很喜欢漂亮的Windows7
Win7界面很漂亮一直是公认的,特别是Aero效果,玻璃透明的感觉爱不释手。自己很喜欢漂亮的Windows7
通过应用程序内置资源实现换肤,典型的应用为QQ空间中换肤的实现. 应用场景为: 应用一般不大,且页
在这里谈一下墨迹天气的换肤实现方式,不过首先声明我只是通过反编译以及参考了一些网上其他资料的方
概述 本文涵盖了一个简单的C实现的搜索引擎的搭建始末。 我通常使用SQL Server和C #,但我教C/C++的
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号