2019独角兽企业重金招聘Python工程师标准>>>

最近,由于需要做到搜索功能,但是搜索功能里面,涉及的关系比较复杂,如果通过sql语言来查询,效率十分低下,所以便开始研究了下java开源搜索引擎lucene 。

Lucene入门起来了解其使用规则并不难,他是围绕索引Index来进行创建,查询等操作。而索引是存放在Directory中,Directory有很多种类,不过主要分成两种:

一、存放在运行内存中的RAMDirectory,既然放在内存中,也就说明他的声明周期极其短,不过,另一方面也表明他的读取存取速度快。

二、存放在物理磁盘中的FileSwitchDirectory, FSDirectory, MockDirectoryWrapper, NRTCachingDirectory ,除了FSDirectory外,其他几种是根据环境会发挥出不同的性能的,而FSDirectory相对要智能很多,他会根据目前的环境自行决定他的确切存储方式。

而Lucene的基本使用流程为:

一、声明指定Directory ,如:

Directory directory = new RAMDirectory();

二、创建索引并放入指定Directory,如:

IndexWriter writer = null;try {writer = new IndexWriter(directory, new IndexWriterConfig(Version.LUCENE_35, new StandardAnalyzer(Version.LUCENE_35)));writer.deleteAll();Document doc = null;doc = new Document();doc.add(...); //在此文档添加信息属性等writer.addDocument(doc);//创建文档索引} catch (CorruptIndexException e) {e.printStackTrace();} catch (LockObtainFailedException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();} finally {try {if(writer!=null)writer.close();} catch (CorruptIndexException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}

三、读取索引,进行查询:

try {IndexReader reader = IndexReader.open(directory);IndexSearcher searcher = new IndexSearcher(reader);TermQuery query = new TermQuery(new Term(指定属性,查询内容));
//获得查询数据,条数为自定义,以下为10条TopDocs tds = searcher.search(query, 10);for(ScoreDoc sd:tds.scoreDocs) {//查询到的数据进行数据的操作}reader.close();} catch (CorruptIndexException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}

以上为Lucene搜索的基本流程,更高效率的还要对内容进行分词,同义词处理等。

转载于:https://my.oschina.net/u/1024349/blog/147085

Lucene 学习笔记(一)相关推荐

  1. Lucene学习笔记(1)

    Lucene学习笔记 可以搜索文本文件,理论上可以搜索任何类型的数据.只要先把数据转化为文本,就可以对数据进行索引和搜索. 使用了反向索引的机制,维护一个词/短语的表,对于每个词和短语都有一个链表描述 ...

  2. lucene学习笔记_学习Lucene

    lucene学习笔记 我目前正在与一个团队合作,开始一个基于Lucene的新项目. 虽然大多数时候我会争论使用Solr还是Elasticsearch而不是简单的Lucene,但这是一个有意识的决定. ...

  3. Lucene学习笔记

    全文检索概述 数据分类 结构化数据:具有固定格式或者长度有限的数据,例如数据库中的表.[SQL语句] 非结构化数据:与结构化数据对立,例如:邮件.网页.word文档.[数据扫描.全文检索] 半结构化数 ...

  4. 搜索-Lucene学习笔记

    1 全文检索 和 索引 1.1 索引 将非结构化数据中的一部分信息 取出来,重新组织,使其变得有一定结构,然后对此有 一定结构的数据进行搜索,从而达到搜索相对较快的目的.这部分从非结构化数据中 取出的 ...

  5. Lucene学习笔记:Field.Store.* 域存储选项

    2019独角兽企业重金招聘Python工程师标准>>> Store.YES: 指定存储域值.该情况下,原始的字符串值全部都被保存在索引中,并可以由IndexReader类恢复.该选项 ...

  6. Hadoop学习笔记一 简要介绍

    Hadoop学习笔记一 简要介绍 这里先大致介绍一下Hadoop.     本文大部分内容都是从官网Hadoop上来的.其中有一篇介绍HDFS的pdf文档,里面对Hadoop介绍的比较全面了.我的这一 ...

  7. 基于Solr的空间搜索学习笔记

    基于Solr的空间搜索学习笔记 在Solr中基于空间地址查询主要围绕2个概念实现: (1) Cartesian Tiers 笛卡尔层 Cartesian Tiers是通过将一个平面地图的根据设定的层次 ...

  8. 学习笔记:The Log(我所读过的最好的一篇分布式技术文章

     学习笔记:The Log(我所读过的最好的一篇分布式技术文章)         前言 这是一篇学习笔记. 学习的材料来自Jay Kreps的一篇讲Log的博文. 原文很长,但是我坚持看完了,收获 ...

  9. Solr 6.7学习笔记(04)-- Suggest

    当我们使用baidu或者Google时,你输入很少的字符,就会自动跳出来一些建议选项,在Solr里,我们称之为Suggest,在solrconfig.xml里做一些简单的配置,即可实现这一功能.配置如 ...

最新文章

  1. opencv中image watch插件安装与使用教程
  2. otto android,Android Otto调研
  3. 长沙医学院计算机系怎么样,长沙医学院有哪些专业及什么专业好
  4. cvNormalizeHist()函数详解
  5. 【Android 逆向】IDA 工具使用 ( 重命名函数 | 添加注释 | 添加标签 / 跳转标签 | 代码跳转前进 / 后退 )
  6. onsrcoll和scrollTop兼容与实现
  7. 我见过的一个让我瞠目结舌的电脑高手!
  8. eclipse 汉化教程(语言包)
  9. 数学知识总结——矩阵
  10. 如何保持安全在线的五大技巧
  11. webkit内核浏览器的CSS写法
  12. 现在当兵有什么待遇复原以后_当兵多少年最好呢?这些关键点会影响在部队发展,很重要、很实用...
  13. Android之——图片的内存优化
  14. 【安装sql 2008步骤】
  15. 计算机图形学代码之三角形绘制
  16. 解决树莓派无法安装QT5 的问题
  17. 登陆界面HTML验证码生成
  18. PhotoShop中蒙版介绍
  19. 【ZZULIOJ】1116: 删除元素
  20. DB2数据库配置db cfg

热门文章

  1. android 英文帮助文档地址,使用android SDk帮助文档(英文) 下载中文SDK帮助文档(中文)...
  2. 2018java多线程面试题_2018JAVA面试题附答案
  3. 一键还原奥运版_福田奥铃CTS超越版和江淮全能卡车,哪款实力更强?
  4. linux sed给空文件首行插入_linux下批量修改文件后缀名以及合并多行
  5. mysql回收权限_mysql回收权限不成功,请问如何破?
  6. 品质标签分几种颜色_小标签大学问,如何给实验室仪器贴标签?
  7. git--分支管理:创建、合并、冲突解决
  8. IIS7 设置读取、脚本和可执行文件的执行权限的步骤
  9. linux inode详解
  10. 参考滴滴左右对齐自适应