图片搜索实现

一、BM25算法的实现

BM25算法的实现较为简单,但是此处修改了simpleScorer的构造函数,传入了indexReader,以便获得doc中 abstractString的长度,具体实现见如下代码:

assert doc != ‐1;try{Document currentDoc = reader.document(doc);String absStr = currentDoc.get("abstract");int docLen = absStr.length();float denominator = K1 * (1 ‐ b + b * (float)docLen / avgLength) + termDocs.freq();float numerator = (K1 + 1) * termDocs.freq();float tf = numerator / denominator;return tf * idf;}catch (IOException e){System.out.println(e);return idf * this.termDocs.freq();}

二、VSM模型与BM25的对比

VSM模型则直接使用了lucene自带的term query 对爆笑这个词进行了搜索,VSM与BM25对比的结果如下: vsm:

bm25:

可见VSM中爆笑出现的频率更高,但是BM25中爆笑出现的频率并不一定是最高的,这与它们各自的计算方式相关。

三、用html扩充语料库

首先用python写了一个脚本将各个html中的title抽取出来,并处理了编码问题,随后生成了一个新的xml文件供

ImageIndexer生成新的index,下面对比了是否扩充语料库的搜索结果:

美女(扩充语料库)

美女(未扩充语料库)

可见扩充语料库后,搜索结果比扩充前更加丰富。

四、查询词分词

对查询词同样适用了IKAnalyzer进行分词,随后每个term都生成一个termQuery,并将termQuery add到

BooleanQuery中,add的方式为occur.SHOULD。这样即使当搜索词与索引不是完美匹配时,也可以利用分词有一个较好的搜索结果。下面给出一个对比:

分词前

分词后

可见一些分词前无法搜到的图片在分词后可以搜到一些折中的结果。

基于Java实现的图片搜索系统相关推荐

  1. ssm java上传图片预览_基于JAVA的SSM图片浏览系统

    今天和一个朋友共同完成了一个图片浏览系统的设计与实现项目,我们在开发时选用的框架是SSM(MYECLIPSE)框架.我这个朋友知识有限,只会这个框架,哈哈,都是为了方便他.和往常一样选用简单又便捷的M ...

  2. 基于JAVA校园疫情防控系统(Springboot框架) 开题报告

      本科生毕业论文 基于Java(springboot框架)校园疫情防控系统 开题报告 学    院: 专    业: 计算机科学与技术 年    级: 学生姓名: 指导教师:   XXXX大学本科生 ...

  3. 基于Java的校园“研帮”系统的设计与实现 毕业设计-附源码201433

    基于Java的校园"研帮"系统的设计与实现 摘 要 由于数据库和数据仓库技术的快速发展,学校共享信息系统建设越来越向模块化.智能化.自我服务和管理科学化的方向发展.学校共享信息系统 ...

  4. 基于Java的设计开题报告_基于Java的电子邮件的收发系统的设计与实现开题报告...

    基于Java的电子邮件的收发系统的设计与实现开题报告 (8页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.90 积分 开题报告 基于 Java 的电子 ...

  5. java中ssm付款代码_基于Java+SSM的网上订餐系统、基于JavaWeb的网上订餐系统

    需求分析 基于Java+SSM框架实现一个校园点餐系统,包括用户端和管理员端; 前台主要功能有用户注册, 用户登录, 我的购物车.我的订单.商品评论.校园资讯等; 管理员端主要功能有:用户管理.商品管 ...

  6. 基于JAVA框架的电脑测评系统计算机毕业设计源码+系统+mysql数据库+lw文档+部署

    基于JAVA框架的电脑测评系统计算机毕业设计源码+系统+mysql数据库+lw文档+部署 基于JAVA框架的电脑测评系统计算机毕业设计源码+系统+mysql数据库+lw文档+部署 本源码技术栈: 项目 ...

  7. 基于Java毕业设计校园网络维修系统源码+系统+mysql+lw文档+部署软件

    基于Java毕业设计校园网络维修系统源码+系统+mysql+lw文档+部署软件 基于Java毕业设计校园网络维修系统源码+系统+mysql+lw文档+部署软件 本源码技术栈: 项目架构:B/S架构 开 ...

  8. 基于Java毕业设计研究生推免系统源码+系统+mysql+lw文档+部署软件

    基于Java毕业设计研究生推免系统源码+系统+mysql+lw文档+部署软件 基于Java毕业设计研究生推免系统源码+系统+mysql+lw文档+部署软件 本源码技术栈: 项目架构:B/S架构 开发语 ...

  9. 基于JAVA供电公司安全生产考试系统计算机毕业设计源码+数据库+lw文档+系统+部署

    基于JAVA供电公司安全生产考试系统计算机毕业设计源码+数据库+lw文档+系统+部署 基于JAVA供电公司安全生产考试系统计算机毕业设计源码+数据库+lw文档+系统+部署 本源码技术栈: 项目架构:B ...

最新文章

  1. CUDA刷新器:CUDA编程模型
  2. JS获取一个字符串中被指定的两个字符串包括起来的所有字符串数组
  3. 开发日记-20190718 关键词 读书笔记《Linux 系统管理技术手册(第二版)》DAY 11
  4. webpack ,gulp
  5. 如何获取微信API的Access Token
  6. Ios9 html5,ios9,html5_ios9下在浏览器中通过scheme打开app的问题,ios9,html5 - phpStudy
  7. python selenium chrome获取每个请求内容_python+selenium调用chrome打开网址获取内容
  8. Java怎么去最高分最低分,深入java虚拟机:原子操作ParkEvent和Parker
  9. Codeforces Round #182 (Div. 1)题解【ABCD】
  10. Windows内核管理层的部件之I/O管理模块
  11. My97DatePicker日历实现开始日期小于结束日期验证
  12. head first 设计模式源码
  13. 结构体内存对齐(如何计算结构体的大小)
  14. 【数据结构与算法】1.2 数据结构与算法分析
  15. 自然语言处理中CNN模型几种常见的Max Pooling操作
  16. MacBook Pro电脑一键切换输入法
  17. sketch插件开发_适用于Web开发人员的10个免费Sketch插件
  18. BIOS设置通电开机?请问高手怎么设置?
  19. 数据分析知识体系与校招时间线
  20. 【Java】Map类

热门文章

  1. 信息安全管理(CISP)—— 业务连续性
  2. 程序员可选择的个博客论坛网站
  3. 物联网学习之旅:微信小程序控制STM32(三)--STM32代码编写
  4. pku 2251 Dungeon Master 基本BFS
  5. CDN加速可以为网络用户解决哪些难题?
  6. 线程实用解析--------(六)Control.Invoke()和Control.BeginInvoke()
  7. 第1章 开始使用C++
  8. 用户画像数据指标体系之用户属性维度
  9. Blockly编程教程-Google Blockly入门与介绍
  10. 深入了解计算机系统——实验二(Data Lab)(详解)