`

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

阅读更多

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

 

 

 

 

 

 

 

 

 

1
2
分享到:
评论
4 楼 yangshangchuan 2015-04-07  
carafe 写道
yangshangchuan 写道
carafe 写道
跟java8有毛关系


用Java8的函数式编程

那重点是java8还是搜索?不用java8不能做到?如果重点是搜索,以java8作标题是想证明你用了java8?


搜索可以有多种实现方式,Java8是一种,这里使用Java8是想引起对Java8感兴趣的人的注意,很多人可能对搜索没接触过,不过对JAVA8感兴趣,这么一来,就可能让很多人跨入搜索的大门。授人以鱼不如授人以渔,抛砖引玉而已。
3 楼 carafe 2015-04-07  
yangshangchuan 写道
carafe 写道
跟java8有毛关系


用Java8的函数式编程

那重点是java8还是搜索?不用java8不能做到?如果重点是搜索,以java8作标题是想证明你用了java8?
2 楼 yangshangchuan 2015-04-07  
carafe 写道
跟java8有毛关系


用Java8的函数式编程
1 楼 carafe 2015-04-07  
跟java8有毛关系

相关推荐

    个性化搜索引擎

    系统采用的是bing引擎,国内对谷歌和谐没有采用谷歌引擎。使用bing引擎爬取百度网盘关于关键字的信息,将结果页使用Jsoup解析后展示给用户,在登录后会自动统计搜索的关键词的个数,将最常搜索的三条记录展示给用户

    基于JAVA新闻搜索引擎的设计与实现

    CAJ版设计论文 本文从搜索引擎技术开始,阐述了搜索引擎的基本原理、所采用的相关技术,进而引出专题搜索引擎,交代了为...用户可以进行个性化设置,限定新闻的刷新频率,新闻源范围。程序根据用户的设置定时刷新新闻。

    Personalized Search Engine:文件的个性化搜索引擎-开源

    MySearchEngine(个性化搜索引擎)是一种Java软件,用于搜索OS文件系统中的文件和文件夹。 它与一般的OS文件搜索引擎不同之处在于,它个性化了索引设置,以便用户可以选择要索引的目录或从现有索引中删除,并且还...

    基于JAVA技术的搜索引擎的研究与实现

    在理论研究的基础上,本文还利用Java技术对搜索引擎的三个核心部分即...实现搜索引擎的个性化,使搜索引擎具有自我学习的功能,能自动地适应用户的查询需求,并能对用户进行智能分类从而为搜索引擎的个性化提供依据。

    eLibrary:常用文件的个性化搜索引擎-开源

    它不同于一般的操作系统文件搜索引擎,因为它个性化了索引设置,以便用户可以选择要索引的目录或从现有索引中删除的目录,它还可以建议查询,就像 Google 的“您的意思是”功能一样。 索引和查询建议的自定义极大地...

    SolrImplementation:另一个用 Java 编写的 2014 年秋季 SUNY Buffalo 项目,该项目实现了 solr 以提供个性化的新搜索引擎

    Solr实现另一个用 Java 编写的 2014 年秋季 SUNY Buffalo 项目,它实现了 solr 以提供个性化的新搜索引擎。 它还具有推荐引擎,可以从与您的查询匹配的社交网站推荐新闻提要。

    prefreader:个性化新闻搜索引擎

    预读器 个性化新闻搜索引擎

    基于asp的搜索引擎开发(源代码).zip

    用户在搜索引擎上进行信息查询时,并不十分关注返回结果的多少,而是看结果是否和自己的需求吻合。 2.基于智能代理的信息过滤和个性化服务。信息智能代理是另外一种利用互联网信息的机制。它使用自动获得的领域模型...

    瑞宝通JAVA版B2B电子商务系统.

    瑞宝通B2B系统使用当前流行的JAVA语言开发...系统前端完全遵循W3C网页标准,采用DIV+CSS开发,极大的提高了系统对浏览器的兼容性和SEO(搜索引擎优化)。在IE6/IE7/IE8/Firefox/Charome/Opera等主流浏览器下运行良好。

    瑞宝通JAVA版B2B电子商务系统 v1.0.rar

    瑞宝通B2B系统使用当前流行的JAVA语言开发...系统前端完全遵循W3C网页标准,采用DIV CSS开发,极大的提高了系统对浏览器的兼容性和SEO(搜索引擎优化)。在IE6/IE7/IE8/Firefox/Charome/Opera等主流浏览器下运行良好。

    瑞宝通java版B2B电子商务网站系统V1.0

    目前,基于互联网的B2B电子商务发展迅速,...系统前端完全遵循W3C网页标准,采用DIV+CSS开发,极大的提高了系统对浏览器的兼容性和SEO(搜索引擎优化)。在IE6/IE7/IE8/Firefox/Charome/Opera等主流浏览器下运行良好。

    Java开源的下一代社区平台Symphony.zip

    对搜索引擎友好 标签、领域可以自定义链接,并且可以单独配置 meta title/keywords/description 后端 Markdown 渲染,输出爬虫可读的 HTML 管理员设置的浏览权限不影响爬虫抓取内容 通过一些 HTML 细节属性...

    java 面试题 总结

    Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作。 10、&和&&的区别。 &是位运算符,表示按位与运算,&&是逻辑运算符,表示逻辑与(and)。 11、HashMap...

    java毕业设计

    互联网是一个信息传播和...通过这样的信息资源获取,不仅可以加深对网络爬虫工作原理的理解,也明白了如何实现对网络上资源的抽取,利用和信息处理,对日后更深入的学习网络爬虫技术,搜索引擎相关实现都有很大的帮助。

    Java源码基于SSM框架的壁纸网站设计与实现+vue(完整源码+说明文档+lw).rar

    SEO优化与数据统计:网站遵循SEO最佳实践,通过合理的URL结构、关键词优化等手段,提升网站在搜索引擎中的排名和曝光度。同时,通过数据统计和分析,了解用户行为和偏好,为网站运营和改进提供依据。 基于SSM框架的...

    java_jsp项目源码_博客系统(struts+hibernate+spring).rar

    项目实现了用户注册、登录、文章发布、评论、分类管理、标签管理、搜索、分页浏览等核心功能,并支持用户个性化设置和社交分享。 用户模块支持第三方账号(如QQ、微博)快捷注册与登录,同时提供个人信息修改、密码...

    java_jsp项目源码_+access网络书店销售管理系统(系统+论文+开题报告+任务书+摘要+英文文献).rar

    7. 搜索引擎优化:通过友好的URL结构、关键词优化和元标签设置等手段,提高网站在搜索引擎中的排名,吸引更多潜在客户。 8. 第三方接口集成:预留与第三方支付平台、物流系统和社交媒体等接口的集成空间,方便后续...

    基于Java+MySQL实现(Web)图书借阅管理系统【100010214】

    (4) 个性化推荐图书:根据读者的兴趣爱好,每本书对应读者的浏览量,每本书的借阅量,每本书的评论数进行多重排序,展示在读者面前 (5) 历史记录浏览,查询 (6) 基于 Elasticsearch 搜索引擎的全文检索 后台系统 (1) 管理...

    java_jsp项目源码_水果系统.rar

    2. **搜索功能**:系统提供了强大的搜索引擎,用户可以通过输入水果名称、价格范围等关键字快速定位到所需的水果。 3. **购物车**:用户可以将心仪的水果加入购物车,进行批量购买。购物车支持修改数量、删除商品、...

    超级有影响力霸气的Java面试题大全文档

    Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作。 13、&和&&的区别。 &是位运算符,表示按位与运算,&&是逻辑运算符,表示逻辑与(and)。 14、...

Global site tag (gtag.js) - Google Analytics