前言

最早做非结构化数据搜索时用的还是lucene.net,一直说在学习java的同时把lucene这块搞一搞,这拖了2年多了,终于开始搞这块了。

开发环境

idea2016、lucene6.0、jdk1.8

使用lucene准备条件

1、pom.xml

2、测试数据。  我从博客园首页拿了几条数据,直接写了个伪Dao返回一个List<Blog>

public List<Blog> listBlogs(){List<Blog> list = new ArrayList<Blog>();Blog b1=new Blog(6538488,"风过无痕-唐","你真的了解volatile吗,关于volatile的那些事","http://www.cnblogs.com/tangyanbo/p/6538488.html");Blog b2=new Blog(6541312,"布鲁克石","TypeScript设计模式之职责链、状态","http://www.cnblogs.com/brookshi/p/6541312.html");Blog b7=new Blog(6547215,"嵘么么","轻松理解JavaScript闭包","http://www.cnblogs.com/rongmm/p/6547215.html");Blog b3=new Blog(6541220,"一线码农","使用Task的一些知识优化了一下同事的多线程协作取消的一串代码","http://www.cnblogs.com/huangxincheng/p/6541220.html");Blog b4=new Blog(6516387,"xybaby","并发与同步、信号量与管程、生产者消费者问题","http://www.cnblogs.com/xybaby/p/6516387.html");Blog b5=new Blog(6532713,"王福朋","深入理解 JavaScript 异步系列(4)—— Generator","http://www.cnblogs.com/wangfupeng1988/p/6532713.html");Blog b6=new Blog(6517788,"欢醉","入坑系列之HAProxy负载均衡","http://www.cnblogs.com/zhangs1986/p/6517788.html");list.add(b1);list.add(b2);list.add(b3);list.add(b4);list.add(b5);list.add(b6);list.add(b7);return list;}

IndexSearcher搜索

1、搜索体验,基于servlet开发,直接接受路径参数key

2、先写入索引

public class IndexWriterServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {String index_path="d:\\indexDir";Directory dir=null;Analyzer analyzer=null;IndexWriterConfig config=null;IndexWriter indexWriter=null;try {dir =new SimpleFSDirectory(Paths.get(index_path));analyzer=new StandardAnalyzer();config =new IndexWriterConfig(analyzer);indexWriter =new IndexWriter(dir,config);BlogDao blogDao=new BlogDao();List<Blog> list = blogDao.listBlogs();for (Blog blog:list){Document document=new Document();document.add(new Field("id",blog.getId().toString(),TextField.TYPE_STORED));document.add(new Field("author",blog.getAuthor(),TextField.TYPE_STORED));document.add(new Field("title",blog.getTitle(),TextField.TYPE_STORED));document.add(new Field("url",blog.getUrl(),TextField.TYPE_STORED));indexWriter.addDocument(document);}indexWriter.commit();System.out.println("====索引创建完成====");}catch (Exception ex){ex.printStackTrace();}finally {if(indexWriter !=null){indexWriter.close();}}}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req,resp);}
}

2、查询索引数据

public class IndexReaderServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {Directory dir =null;DirectoryReader reader =null;IndexSearcher searcher=null;String index_path="d:\\indexDir";try{//dir =new RAMDirectory();dir =new SimpleFSDirectory(Paths.get(index_path));reader = DirectoryReader.open(dir);searcher=new IndexSearcher(reader);String key = req.getParameter("key");Query query = new TermQuery(new Term("title",key));TopDocs rs=searcher.search(query,100);resp.setContentType("text/html");resp.setCharacterEncoding("UTF-8");PrintWriter out = resp.getWriter();StringBuilder strHtml =new StringBuilder();for (int i = 0; i < rs.scoreDocs.length; i++) {Document firstHit = searcher.doc(rs.scoreDocs[i].doc);strHtml.append("title:"+firstHit.getField("title").stringValue()+"<br>");strHtml.append("author:"+firstHit.getField("author").stringValue()+"<br>");strHtml.append("<a href='"+firstHit.getField("url").stringValue()+"'>"+ firstHit.getField("url").stringValue()+"</a><br>");strHtml.append("====================================================<br>");}out.write(strHtml.toString());}catch (Exception ex){ex.printStackTrace();}finally {reader.close();}}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req,resp);}
}

  

总结

读写索引用到的几个关键类:IndexWriter、IndexSearcher、Directory、DirectoryReader、Document、TermQuery、Field

转载于:https://www.cnblogs.com/sword-successful/p/6547965.html

Lucene实战之初体验相关推荐

  1. xhr get获取文件流下载文件_python爬虫实战——豆瓣电影get初体验

    影评许可证 公众号[2019]第22期 本栏目由"数据皮皮侠"独家呈献 专场 python爬虫实战--豆瓣电影get初体验 2019.10.28 / 早上7点场 / 免费 本期&q ...

  2. 我的Go+语言初体验——Go+语言构建神经网络实战手写数字识别

    "我的Go+语言初体验" | 征文活动进行中- 我的Go+语言初体验--Go+语言构建神经网络实战手写数字识别 0. 前言 1. 神经网络相关概念 2. 构建神经网络实战手写数字识 ...

  3. js实战代码系列—周杰伦给你报时间+网页页签制作模板+jQuery初体验

    等到下次需要用的时候,可以回来找模板用哈哈哈哈! 刚碰jQuery,今天是个好日子,明天继续学jQuery,明天也是个好日子. https://blog.csdn.net/hanhanwanghaha ...

  4. 《 HarmonyOS实战—HarmonyOS(鸿蒙)开发初体验,华为如何引领物联网时代》

    Harmonyos(鸿蒙)开发初体验,华为如何引领物联网时代 华为鸿蒙系统是一款全新的面向全场景的分布式操作系统,创造一个超级虚拟终端互联的世界,将人.设备.场景有机地联系在一起,将消费者在全场景生活 ...

  5. 一个课程,11个项目!爬虫初体验,快来!

    <11 个案例开启 Python 爬虫初体验> <人人都能做的 Vue 3 记账本实战>

  6. 文档数据库RavenDB-介绍与初体验

    不知不觉,".NET平台开源项目速览"系列文章已经15篇了,每一篇都非常受欢迎,可能技术水平不高,但足够入门了.虽然工作很忙,但还是会抽空把自己知道的,已经平时遇到的好的开源项目分 ...

  7. 从入门到入土:python爬虫|scrapy初体验|安装教程|爬取豆瓣电影短评相关信息(昵称,内容,时间和评分)

    此博客仅用于记录个人学习进度,学识浅薄,若有错误观点欢迎评论区指出.欢迎各位前来交流.(部分材料来源网络,若有侵权,立即删除) 本人博客所有文章纯属学习之用,不涉及商业利益.不合适引用,自当删除! 若 ...

  8. Vue快速上手笔记1 - 使用初体验

    Vue快速上手笔记1 - 使用初体验 博主:李俊才 邮箱:291148484@163.com 若本文中存在的错误请告知博主更正 希望对大家有所帮助 专题目录:https://blog.csdn.net ...

  9. Docker深入浅出系列 | 容器初体验

    Docker深入浅出系列 | 容器初体验 教程目标 Docker已经上市很多年,不是什么新鲜事物了,很多企业或者开发同学以前也不多不少有所接触,但是有实操经验的人不多,本系列教程主要偏重实战,尽量讲干 ...

最新文章

  1. 无线轮播android,Android无限轮播Banner的实现
  2. 六十五、下一个更大的数系列,单调栈解决方法
  3. 使用DynamoDBMapper扫描DynamoDB项目
  4. linux权限最小化分级,vim可视化Linux系统安全最小化原则 su sudo
  5. 【Linux_Fedora_应用系列】_1_如何安装音乐播放器和mp3解码
  6. 软件测试到底要不要报培训班?
  7. adb 命令大全(简洁明了)adb命令启动应用
  8. 【VHDL】VHDL设计一个分频器
  9. java模拟新浪微博_用java程序模拟登陆新浪微博
  10. 当游戏遇上电视,智能大屏就能讲出新故事?
  11. 图解Navicat连接、操作数据库
  12. 创建表 编码_创建没有编码的专业商业网站
  13. 阴阳师辅助(基于按键精灵)
  14. ITECH 微电网测试解决方案
  15. 计算机sps材料,SPS网络通信-Phocos.PDF
  16. 单元测试覆盖分析指标-翻译中
  17. File上传文件后缀名 限制
  18. 详解服务器CPU和GPU技术区别和联系
  19. 山东济南计算机比赛,喜报|济南娃全国电脑制作活动大赛勇夺冠
  20. 转发一份GoldenGate 配置文档

热门文章

  1. [线性代数]Note2--矩阵消元
  2. oracle 细粒审核,oracle10g 细粒审计
  3. html日期选择框_第十课 日期选择框(datepicker)的操作
  4. centos7下python3与python2共存并且开启py3虚拟环境
  5. 第一次Sprint总结
  6. C# 的Delegate(委托)
  7. 剧情介绍:“肖申克的救赎”
  8. 根据Web服务器的记录来追踪黑客(转)
  9. 计算机硬件技术基础5章在线,《计算机硬件技术基础》试题(D)
  10. IDEA启动tomcat报错java.util.zip.ZipException: error in opening zip file