搜索引擎进行信息检索的优化策略方法(10w+新闻数据,新闻信息以json文件格式保存)

优采云 发布时间: 2021-12-29 10:00

  搜索引擎进行信息检索的优化策略方法(10w+新闻数据,新闻信息以json文件格式保存)

  一、选择主题

  工程搜索类型:

  有针对性地采集

3-4个新闻网站,实现对这些网站信息的提取、索引和检索。网页数量不少于100,000。可以按照相关性、时间、流行度等属性进行排序(需要自己定义),可以实现相似新闻的自动聚类。

  需求:相关搜索推荐、片段生成、结果预览(移动到相关结果、预览)功能

  二、开发工具三、设计方案3.1总体思路

  在实施新闻信息检索系统时,首先采集

信息。信息采集完成后,使用Lucene提供的api构建索引库。前端使用jsp接收用户查询,后台使用servlet对用户查询进行分段。文档进行匹配,最后将查询结果集反馈给用户并显示在前端页面上。

  3.2 信息采集

  Scrapy 是一个由 Python 开发的快速、高级的屏幕抓取和网页抓取框架,用于抓取网站和从页面中提取结构化数据。我们采集

了10w+条新闻数据,新闻信息以json文件格式保存。scrapy采集

过程:

  

  采集

的新闻数据:

  

  新闻格式:

  

  3.3倒排索引构建

  在索引构建模块中,主要包括以下三个关键步骤:数据预处理、新闻内容分词、倒排索引构建。

  **数据预处理:**Gson 是 Google 提供的 Java 类库,用于在 Java 对象和 JSON 数据之间进行映射。您可以将 JSON 字符串转换为 Java 对象,反之亦然。我们使用 Gson 将 json 文件转换为 News 对象

  **中文分词:**IK Analyzer是一款基于java语言开发的开源、轻量级的中文分词工具包。IK 是作为 Java 的公共分词组件开发的,独立于 Lucene 项目,并为 Lucene 提供了一个默认值。优化实施。IK分词采用独有的“前向迭代最细粒度分词算法”,支持细粒度和智能分词两种分词模式,采用多子处理器分析模式,支持英文字母、数字、中文词汇等分词处理,兼容韩日字符。

  **建立倒排索引:**Lucene提供了建立倒排索引的方法,步骤如下图所示:

  

  Luke是Lucene搜索引擎的第三方工具,方便开发和诊断。它可以访问

  现有的 Lucene 索引。使用luke打开索引目录,可以看到索引库中存储了新闻信息。

  

  3.4 索引查询

  创建索引后,查询可以分为以下几个步骤:

  1. 设置查询索引的目录(这里是上面创建索引的目录)。

  2. 创建 indexSearcher。

  3. 设置查询的分词方式

  4. 设置查询域,例如查询域为新闻标题,然后到新闻标题字段进行比较 5. 设置查询字符串,即要查询的关键词 .

  6. 返回的结果是文档的集合,放在TopDocs中,通过循环TopDocs数组输出查询结果。用户一般只看前几页的数据。为了加快前端数据的显示速度,将前1000条数据返回给前端。

  3.5关键字高亮

  搜索结果的高亮对用户的体验和友好度非常重要,可以快速标记用户搜索的关键词。Lucene 的 Highlighter 类可以通过在关键字前面添加 css 片段来返回文档中的关键字高亮。

  3.6用户界面

  使用jsp编写用户界面,服务器为Tomcat 7.0,用户输入关键词然后提交表单,然后

  该站使用servlet接收用户查询,然后以查询字符串作为搜索关键字在索引库中搜索文档。检索效果:

  

  3.7 按时间和页面结果排序

  按时间排序:所有新闻结果存储在一个列表集合中,集合中的每个元素都是一个新闻对象。通过重写Comparator类中的compare方法,实现了集合中每个新闻元素的时间排序。

  结果分页:定义一个Page类来记录当前页数、总页数、每页数据条数、数据总数、每页起始数、每页结束数、是否有下一页,是否有上一页。

  四、参考资料

  可以参考以下材料:

  1. lucene全文搜索基础

  2. Lucene 创建索引

  3. Lucene 查询索引

  4. Lucene 查询结果高亮显示

  5. Lucene 查询(Query)子类

  6. java操作json

  7. java 集合

  8. Servlet 基础知识

  五、总结

  开源工具的使用已经显着提高了开发效率,但是从头开始构建仍然需要大量学习和不断积累。

  欢迎批评和指正。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线