精华内容
下载资源
问答
  • scrapy+Lucene搭建小型搜索引擎(现代信息检索大作业)

    万次阅读 多人点赞 2016-05-22 22:51:12
    按相关度、时间、热度 (需要自己定义) 等属性进行排序, 能实现相似 新闻的自动聚类。 要求: 有相关搜索推荐、snippet 生成、结果预览 (鼠标移到相关结果, 能预览) 功能 二、项目线上访问地址 项目访问地址:...

    一、选题

    工程类搜索型:

    定向采集 3-4 个新闻网站, 实现这些网站信息的抽取、索引和检索。网页数 目不少于 10 万条。能按相关度、时间、热度 (需要自己定义) 等属性进行排序, 能实现相似 新闻的自动聚类。
    要求: 有相关搜索推荐、snippet 生成、结果预览 (鼠标移到相关结果, 能预览) 功能

    二、开发工具

    • jdk 版本:1.7
    • 服务器:Tomcat7.0
    • python:2.7
    • scrapy:1.0

    三、设计方案

    3.1整体思路

    在实现新闻信息检索系统时首先进行了信息采集,信息采集结束之后使用 Lucene 提供的 api 构建索引库, 前端使用 jsp 接收用户查询,在后台使用 servlet 对用户查询进 行分词处理,之后到索引库中进行文档匹配, 最后把查询结果集反馈给用户并在前端页面中 展示。

    3.2信息采集

    Scrapy 是 Python 开发的一个快速、高层次的屏幕抓取和 web 抓取框架,用于抓取 web 站点并从页面中提取结构化的数据。我们采集了 10w+ 新闻数据, 新闻信息以 json 文件格 式保存。scrapy 采集流程:
    这里写图片描述
    采集到的新闻数据:
    这里写图片描述
    新闻格式:
    这里写图片描述

    3.3倒排索引构建

    在索引构建模块,主要包括下面三个关键步骤: 数据预处理、新闻内容分词、构建倒排 索引。
    **数据预处理:**Gson 是 Google 提供的用来在 Java 对象和 JSON 数据之间进行映射的 Java 类库。可以将一个 JSON 字符串转成一个 Java 对象, 或者反过来。我们使用 Gson 把 json 文件转换为 News 对象
    **中文分词:**IK Analyzer 是一个开源的,基于 java 语言开发的轻量级的中文分词工具 包,IK 发展为面向 Java 的公用分词组件,独立于 Lucene 项目,同时提供了对 Lucene 的默 认优化实现。IK 分词采用了特有的“正向迭代最细粒度切分算法“, 支持细粒度和智能分词两 种切分模式, 并且采用了多子处理器分析模式, 支持英文字母、数字、中文词汇等分词处理, 兼容韩文、日文字符。
    **构建倒排索引:**Lucene 提供了构建倒排索引的方法,步骤如下图所示:
    这里写图片描述
    Luke 是一个用于 Lucene 搜索引擎的,方便开发和诊断的第三方工具,它可以访问
    现有 Lucene 的索引. 使用 luke 打开索引目录,可以看到新闻信息被存储到索引库中。
    这里写图片描述

    3.4索引查询

    索引创建好以后,查询可分为以下几个步骤:
    1. 设置查询索引的目录 (这里就是上面创建索引的目录).
    2. 创建 indexSearcher.
    3. 设置 query 的分词方式
    4. 设置查询域, 比如查询域为 news title, 那么就到新闻标题域去比对 5. 设置查询字符串,也就是要查询的关键词.
    6. 返回结果是一个文档集合,放在 TopDocs 中,通过循环 TopDocs 数组输出查询结果. 用户一般只看前几页的数据,为了加快前端的数据展示, 返回前 1000 条数据到前台。

    3.5关键字高亮

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

    3.6用户界面

    使用 jsp 编写用户界面,服务器为 Tomcat 7.0, 用户输入关键词以后提交表单,后
    台使用 servlet 接收用户查询, 之后把查询字符串作为搜索的 key 到索引库中搜索文档。检索效果:
    这里写图片描述

    3.7按时间排序和结果分页

    按时间排序: 所有的新闻结果存放在一个 list 集合中,集合中的每个元素为一个 News 对象, 通过重写 Comparator 类中的 compare 方法实现按集合中每个新闻元素的 Time 排 序。
    结果分页: 定义了一个 Page 类用来记录当前页、总页数、每页多少条数据、总的数据 数、每页起始数、每页终止数、是否有下一页、是否有前一页。

    四、参考资料

    下面列出可参考的资料:
    1. lucene全文检索基础
    2. lucene创建索引
    3. Lucene查询索引
    4. Lucene查询结果高亮
    5. Lucene 查询(Query)子类
    6. java操作json
    7. java集合
    8. servlet基础

    五、总结

    开源工具的使用显著提高了开 发效率,但build from ground还需要学习很多东西,继续沉淀。
    欢迎批评指正。

    展开全文
  • 其核心技术是将文档中所有基本元素的出现信息记录到索引库中, 检索时允许用户采用自然语言表达其检索需求, 并借助截词、邻词等匹配方法直接查阅文献原文信息, 最后将检索结果按相关度排序返回给用户。因而索引...

    全文检索技术
    全文检索

    • 是一种面向全文和提供全文的检索技术, 其核心技术是将文档中所有基本元素的出现信息记录到索引库中, 检索时允许用户采用自然语言表达其检索需求, 并借助截词、邻词等匹配方法直接查阅文献原文信息, 最后将检索结果按相关度排序返回给用户。因而索引数据库的建立是全文检索系统实现的基础, 它以特定的结构存储了数据资源的全文信息, 从而为全文检索系统提供可检索的数据对象。

    自然语言处理研究内容的基础部分。

    • 词法分析、句法分析、语义分析、语用分析、语境分析

    自然语言处理技术在中文全文检索中的应用

    1. 文献信息处理,对文献进行分析, 提取关键信息, 建立转换文档及数据库;
    2. 提问处理, 解释查询提问;
    3. 问题匹配, 将查询提问与转换文档及数据库进行匹配; 对查询结果进行排序处理。

    索引包括:

    1. 字索引
    2. 词索引
    3. 短语索引

    文摘自动生成:
    常用的文摘自动生成的方法是基于统计的方法, 这种方法的基本思想是, 首先对全文进行自动分词, 然后统计文章中各个词出现的频率和权重, 并按照某种准则确定出关键词,将关键词所在的语句抽取出来, 依据各种句子权重指标计算句子综合权重, 选出一组最能代表文献主题内容的句子, 并对句子进行排序作为文摘句, 最后生成文摘 。
    文本分类

    1. 包括自动聚类
    2. 自动归类

    两者的主要区别就是自动聚类不需要事先定义好分类体系, 而自动归类则需要确定好类别体系, 并且要为每个类别提供一批预先分好的对象作为训练文集。
    基于自然语言处理技术的中文全文检索技术的局限
    自然语言处理技术在中文全文检索中的应用深度不够。目前, 自然语言处理技术在全文检索中使用较多的是词法和句法分析, 而在语音、语义和语用方面的应用很少, 即对文本和查询仍停留在对语言结构的分析, 还没有达到概念语义的层面。因而在分析文本的过程中, 系统不能借助上下文语言环境, 正确地推断和选择词汇的含义。
    检索效率不高

    1. 返回的信息过多
    2. 返回重复的信息。

    中文全文检索技术的未来发展方向


    1. 文献信息的深度处理
      未来的标引是按照一定的格式, 建立词法、句法/语义层次的深度标引。
    2. 匹配机制的进一步优化
      未来的匹配机制将达到真正意义上的概念匹配, 匹配在语义上相同、相近、相包含的词语, 使检索更接近人的智能程度, 以减少误检和漏检.
    3. 智能化知识检索
      从内容上真正地理解文献所论述的主题;
      能使用适当的知识表示方法来充分体现各主题概念和标识之间的分、属、交叉等复杂关系;
      能准确在分析用户用各种方式表达的查询要求, 理解用户的真正意图
      具有基于内容的相似性检索、自动分类(自动聚类)和自动摘要、以及知识压缩和去重功能
      跟踪和分析用户的检索行为, 并与用户进行相关反馈, 为用户提供个性化信息服务;
      检索结果自动聚类, 提高检索结果的相关度。

    笔记:主要看看缺陷和发展方向,为写论文做准备。不过这篇文章是07年的。。。看到了几个词:歧义处理、语料库中没有的新词、语义、查询结果相关性差,冗余信息多。全文检索要提升查准率、查全率、查询速度。我有个小思路是:根据查询语句中的关键词,和文章中与此关键词相关的词语做更好的排序。ps:仅是yy而已。

    转载于:https://www.cnblogs.com/StevenL/p/6818561.html

    展开全文
  • solrCloud分布式检索流程

    千次阅读 2013-11-28 23:49:28
    搜索 video,“美女斗秀场” 取按相关度排序取得2条记录~ 过程是: 从集群里得知:video—>两个分片信息 所以请求被并行分发到两个分片搜索,各自取top2 第一次返回 返回: shard1返回: vid:sco

    好久没写solr的文章了,刚好需要在公司作个分享,先总结一些先。

    引用请声明原文:http://blog.csdn.net/duck_genuine/article/details/17014991

    solrCloud分布式检索主要流程如下:

    检索流程


    搜索   video,“美女斗秀场” 取按相关度排序取得2条记录~

    过程是:

    从集群里得知:video—>两个分片信息

    所以请求被并行分发到两个分片搜索,各自取top2

    第一次返回
    返回:

    shard1返回:

    vid:score
    1,   0.5f
    2,   0.3f

    shard2返回:

    vid:score
    3,    0.6f
    4,   0.2f 


    合并结果:取top2
    vid:score 
    3,    0.6f    (shard2)
    1,    0.5f    (shard1)



    再取正向文档数据:


    通过主键并行去两个分片取正向文档数据:字段(vid,times,hd)
    文档id分别:

    3:

    {vid:3,times:100,hd:1}

    1:

    {vid:1,times:200,hd:0}



    再合并结果返回


    如果是要翻页,也就是取第3到第4个结果,则会发起请求每一个分片返回4个结果再合并排序

    引用请声明原文:http://blog.csdn.net/duck_genuine/article/details/17014991




    展开全文
  •  搜索 video,“美女斗秀场” 取按相关度排序取得2条记录~ 过程是: 从集群里得知:video—>两个分片信息   所以请求被并行分发到两个分片搜索,各自取top2 第一次返回返回:shard1返回...

    转载自:http://blog.csdn.net/duck_genuine/article/details/17014991

    solrCloud分布式检索主要流程如下:



     搜索   video,“美女斗秀场” 取按相关度排序取得2条记录~

    过程是:

    从集群里得知:video—>两个分片信息

     

    所以请求被并行分发到两个分片搜索,各自取top2

    第一次返回
    返回:

    shard1返回:

    vid:score
    1,   0.5f
    2,   0.3f

    shard2返回:

    vid:score
    3,    0.6f
    4,   0.2f 


    合并结果:取top2
    vid:score 
    3,    0.6f    (shard2)
    1,    0.5f    (shard1)


    再取正向文档数据:
    通过主键并行去两个分片取正向文档数据:字段(vid,times,hd)
    文档id分别:

    3:
    {vid:3,times:100,hd:1}
    1:
    {vid:1,times:200,hd:0}

    再合并结果返回


    如果是要翻页,也就是取第3到第4个结果,则会发起请求每一个分片返回4个结果再合并排序

     

     

     

     

     

     

     

     

     

     

     

    展开全文
  • 使用传统的数据库查询方式实现搜索无法满足一些高级的搜索需求,比如:搜索速度要快 、搜索结果按相关度排序、搜索内容格式不固定等,这里就需要使用全文检索技术实现搜索功能。 解决方法: 1 单独使用Lucene实现 ...
  • 目前实现了:按关键词进行检索,实现了动态摘要、关键词高亮显示、自动分页、每页显示条目可自定义(默认每页显示10条检索结果) 未实现功能:相关搜索关键词条显示、按相关度进行排序、快照、网页标题、采集时间、...
  • 目前实现了:按关键词进行检索,实现了动态摘要、关键词高亮显示、自动分页、每页显示条目可自定义(默认每页显示10条检索结果) 未实现功能:相关搜索关键词条显示、按相关度进行排序、快照、网页标题、采集时间、...
  • 解决现有仅通过字符串匹配检索时存在的无法按相关程度排序结果和因文件名采用缩写时造成漏检的问题。检索模型的参数估计采用启发式规则自动获得训练集,实现检索全过程自动化。实验表明,使用该模型的检索结果比通过...
  • Sorl搜索技术

    2019-03-05 16:42:00
    使用传统的数据库查询方式实现搜索无法满足一高级的搜索需求,比如:搜索速度要快、搜索结果按相关度排序、搜索内容格式不固定等,这里就需要使用全文检索技术实现搜索功能。 检索技术  项目中的检索技术主要有三...
  • Lucene笔记_汤阳光_01

    2013-09-30 09:42:42
    站内搜索   搜索功能很常见。 搜索是从一大堆资源中快速准确的找出想要的数据。 ...全文检索的定义: ...2,不处理语义,方式是找... 2,相关度排序按相关度得分排序,相关度是指结某对搜索条件的匹配程度)  3,速
  • 一、概述 ...使用传统的数据库查询方式实现搜索无法满足一些高级的搜索需求,比如:搜索速度要快、搜索结果按相关度排序、搜索内容格式不固定等,这里就需要使用全文检索技术实现搜索功能。 ...
  • 一、介绍 1.1 我们需要实现的功能 ...使用传统的数据库查询方式实现搜索无法满足一些高级的搜索需求,比如:搜索速度要快、搜索结果按相关度排序、搜索内容格式不固定等,这里就需要使用全文检索技术实现搜
  • Solr实现电商搜索

    2019-12-23 16:29:15
    使用传统的数据库查询方式实现搜索无法满足一些高级的搜索需求,比如:搜索速度要快、搜索结果按相关度排序、搜索内容格式不固定等,这里就需要使用全文检索技术实现搜索功能。 使用Lucene实现 单独使用Lucene实现...
  • 全文搜索技术Solr

    2019-03-17 14:56:33
    1.背景 ...使用传统的数据库查询方式实现搜索无法满足一些高级的搜索需求,比如:搜索速度要快、搜索结果按相关度排序、搜索内容格式不固定等,这里就需要使用全文检索技术实现搜索功能。 2.1....
  • Lucene&Solr入门(二)

    2019-03-28 20:11:58
    使用传统的数据库查询方式实现搜索无法满足一些高级的搜索需求,比如:搜索速度要快、搜索结果按相关度排序、搜索内容格式不固定等,这里就需要使用全文检索技术实现搜索功能。 使用Lucene实现 单独使用L...
  • 在一些大型门户网站,电子商务网站等都需要站内搜索功能,使用传统的数据库查询方式实现搜索无法满足一些高级的需求,,比如:搜索速度要快,搜索结果按相关度排序、搜索内容格式不固定等。 单独使用Lucene实现站.....
  • 使用Solr实现电商网站中...使用传统的数据库查询方式实现搜索无法满足一些高级的搜索需求,比如:搜索速度要快、搜索结果按相关度排序、搜索内容格式不固定等,这里就需要使用全文检索技术实现搜索功能。 1.1.1. 使用L
  • solr--1.概述

    2018-03-05 09:54:17
    1 问题 1.1 电商搜索 ...使用传统的数据库查询方式实现搜索无法满足一些高级的搜索需求,比如:搜索速度要快、搜索结果按相关度排序、搜索内容格式不固定等,这里就需要使用全文检索技术实现搜
  • 目录 1、实现方法 ...使用传统的数据库查询方式实现搜索无法满足一些高级的搜索需求,比如:搜索速度要快、搜索结果按相关度排序、搜索内容格式不固定等,这里就需要使用全文检索技术实现搜索功能。 ...
  • solr

    2017-11-17 11:59:30
    使用传统的数据库查询方式实现搜索无法满足一些高级的搜索需求,比如:搜索速度要快、搜索结果按相关度排序、搜索内容格式不固定等,这里就需要使用全文检索技术实现搜索功能。 单独使用Lucene实现 单独使用...
  • solr 简介

    2018-06-07 18:30:01
    使用传统的数据库查询方式实现搜索无法满足一些高级的搜索需求,比如:搜索速度要快、搜索结果按相关度排序、搜索内容格式不固定等,这里就需要使用全文检索技术实现搜索功能。单独使用Lucene实现单独使用Lucene实现...
  • Solr入门到熟练

    千次阅读 2017-06-18 21:24:17
    使用传统的数据库查询方式实现搜索无法满足一些高级的搜索需求,比如:搜索速度要快、搜索结果按相关度排序、搜索内容格式不固定等,这里就需要使用全文检索技术实现搜索功能。 2.1.1. 使用Lucene实现 单独使用...
  • Lucene 搜索引擎( ing..)

    2012-06-29 15:52:00
    对于搜索,被搜索的资源类型,分为两种:可以转为文本的、多媒体类型。 Lucene所做的是全文检索(Full-Text Retrieval),是指以文本...4,结果列表有相关度排序。 在信息检索工具中,全文检索是最具通用性和实...
  • 使用传统的数据库查询方式实现搜索无法满足一些高级的搜索需求,比如:搜索速度要快、搜索结果按相关度排序、搜索内容格式不固定等,这里就需要使用全文检索技术实现搜索功能。 1. 单独使用Lucene实现 单独使用...
  • solr使用入门

    2017-09-15 14:28:38
    使用传统的数据库查询方式实现搜索无法满足一些高级的搜索需求,比如:搜索速度要快、搜索结果按相关度排序、搜索内容格式不固定等,这里就需要使用全文检索技术实现搜索功能。 单独使用Lucene实现 单独使用Lucene...
  • 搜索引擎 Solr 简介

    千次阅读 2018-07-19 16:02:52
    使用传统的数据库查询方式实现搜索无法满足一些高级的搜索需求,比如:搜索速度要快、搜索结果按相关度排序、搜索内容格式不固定等,这里就需要使用全文检索技术实现搜索功能。 单独使用Lucene实现 单独使用Lucene...

空空如也

空空如也

1 2 3 4 5 6
收藏数 113
精华内容 45
关键字:

检索按相关度排序