文档章节

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

杨尚川
 杨尚川
发布于 2015/04/05 02:45
字数 413
阅读 1587
收藏 4

需要对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本软件著作






© 著作权归作者所有

杨尚川

杨尚川

粉丝 1103
博文 220
码字总数 1624053
作品 12
东城
架构师
私信 提问
加载中

评论(2)

jt120lz
jt120lz
79
edisondik
edisondik
感谢分享~~13
jsearch v1.0 发布,基于java8的高性能全文检索工具包

jsearch是一个高性能的全文检索工具包,基于倒排索引,基于java8,类似于lucene,但更轻量级。 jsearch起源于superword项目。在superword项目的辅助阅读模块中,需要对大量的PDF电子文本进行...

杨尚川
2015/11/25
2.1K
2
英文单词分析软件--superword

Superword is a Java open source project dedicated in the study of English words analysis and auxiliary reading, including but not limited to, spelling similarity, definition sim......

杨尚川
2015/02/18
2.2K
0
推荐系统--基于用户的协同过滤算法

概述 和搜索引擎一样,推荐系统是为了帮助人们更快速的获得对自己有用的信息。 和搜索引擎不同,推荐系统是人们被动的获取,由系统根据用户行为或其他的信息推荐给用户的,儿搜索引擎是用户主...

欣儿
2014/05/16
490
0
9.20 杭州云栖CloudLab:环境准备

CloudLab场景介绍 随着信息化的发展,企业每天会产生各式各样的结构化,半结构化的数据。如何高效低成本的存储和处理这些数据,如何充分发挥数据的价值是企业普遍面临的挑战。今天的CloudLa...

宇珩
2018/09/18
0
0
Into100沙龙第9期:搜索算法与架构设计

引言:into100沙龙是Top100summit全球软件案例研究峰会的一个下属品牌,从2015年1月起,每月在北京、上海、深圳等地巡回举办的技术沙龙。活动旨在交流软件研发及互联网技术的实战经验,分享...

msup
2015/08/10
5
0

没有更多内容

加载失败,请刷新页面

加载更多

SpringBoot 集成MongoDB

一、MongoDB 简介 MongoDB 如今是最流行的 NoSQL 数据库,被广泛应用于各行各业中,很多创业公司数据库选型就直接使用了 MongoDB,但对于大部分公司,使用 MongoDB 的场景是做大规模数据查询...

zw965
15分钟前
10
0
使用 Envoy 和 AdGuard Home 阻挡烦人的广告

> 原文链接:使用 Envoy 和 AdGuard Home 阻挡烦人的广告 通常我们使用网络时,宽带运营商会为我们分配一个 DNS 服务器。这个 DNS 通常是最快的,距离最近的服务器,但会有很多问题,比如: ...

米开朗基杨
48分钟前
14
0
springboot之全局处理异常封装

springboot之全局处理异常封装 简介 在项目中经常出现系统异常的情况,比如NullPointerException等等。如果默认未处理的情况下,springboot会响应默认的错误提示,这样对用户体验不是友好,系...

Purgeyao
59分钟前
22
0
cookie

cookie: n. 饼干;小甜点 为什么会引入Cookie(在客户端保持http状态) 因为http协议是一种无状态协议,web服务器本身不能识别出哪些请求是同一个服务器发送的,浏览器的每一次请求都是独立...

五公里
今天
23
0
PHP常用函数

<?php/** * 获取客户端IP * @return [string] [description] */function getClientIp() { $ip = NULL; if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) { $arr = explode('......

半缘修道半缘君丶
今天
14
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部