Lucene 全文检索 Lucene的使用
Lucene 全文检索 Lucene的使用
一.简介:
参考百度百科:
http://baike.baidu.com/link?url=eBcEVuUL3TbUivRvtgRnMr1s44nTE70odpjF8VbUpg8z3o8u1mt2PLpP-WnLBZY7ifUNLHDUtKSAQDthiiIhIa
二.使用:
1.必备包:
lucene有7个包需要导入:analysis,document,index,queryParser,search,store,util
2.建立索引:
主要使用类:IndexWriter
主要使用函数:writer.AddDocument(doc);
IndexWriter writer = new IndexWriter("E:/index", new StandardAnalyze(),true,MaxFieldLength.UNLIMITED); //true代表覆盖原先数据,maxFieldLength用来限制Field的大小 Document doc = new Document(); doc.add(new Field("title", "lucene introduction", Field.Store.YES, Field.Index.ANALYZED, Field.TermVector.WITH_POSITIONS_OFFSETS)); doc.add(new Field("time", "", Field.Store.YES, Field.Index.ANALYZED, Field.TermVector.WITH_POSITIONS_OFFSETS)); writer.addDocument(doc); writer.optimize(); //优化 writer.close();
3.检索:
主要类:IndexSearcher
主要函数:searcher.search(query);
IndexSearcher searcher= new IndexSearcher("E:/index"); Query query = new TermQuery(new Term("title", "lucene"));//单个字节查询 //Query query = new FuzzyQuery(new Term("title", "lucene"));//模糊查询 //Query query = new WildcardQuery(new Term("title", "lu*"));//通配符查询 ?代表一个字符,*代表0到多个字符 //BooleanQuery query = new BooleanQuery();//条件查询 //BooleanQuery qson1 = new BooleanQuery(); //Query q1 = new TermQuery(new Term("title", "lucene")); //qson1.add(q1, Occur.MUST);//MUST是必须满足的 //BooleanQuery qson2 = new BooleanQuery(); //Query q2= new TermQuery(new Term("sex", "woman")); //qson2 .add(q2, Occur.MUST_NOT);//MUST_NOT是必须不满足 //query.add(qson1, Occur.SHOULD); //query.add(qson2, Occur.SHOULD);//SHOULD代表满足qson1或者满足qson2都可以 //PhraseQuery query = new PhraseQuery();//近距离查询 //query.setSlop(5);//距离设置为5 //query.add(new Term("title", "lucene")); //query.add(new Term("title", "introduction"));//查询出title中lucene和introduction距离不超过5个字符的结果 //Query query = new PrefixQuery(new Term("title", "lu"));//WildcardQuery的lu*一样 //RangeQuery query = new RangeQuery(new Term("time", "50"),new Term("time", "60"), true); //true代表[50,60],false代表(50,60) Hits hits = searcher.search(query); for (int i = ; i < hits.length(); i++) { Document d = hits.doc(i); String title= d.get("title"); System.out.print(title+ " "); }
Lucene 全文检索 Lucene的使用的更多相关文章
- Apache Lucene(全文检索引擎)—创建索引
目录 返回目录:http://www.cnblogs.com/hanyinglong/p/5464604.html 本项目Demo已上传GitHub,欢迎大家fork下载学习:https://gith ...
- Lucene全文检索系列(一)
1. Lucene简介 Lucene是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎.Lucene以其方便使用.快速实施以及灵活性受到广泛的关注.它可以方便地嵌入到各种应用中实现针对应用的全文 ...
- Lucene全文检索技术
Lucene全文检索技术 今日大纲 ● 搜索的概念.搜索引擎原理.倒排索引 ● 全文索引的概念 ● 使用Lucene对索引进行CRUD操作 ● Lucene常用API详解 ● ...
- 使用Lucene全文检索并使用中文版和高亮显示
使用Lucene全文检索并使用中文版和高亮显示 中文分词需要引入 中文分词发的jar 包,咱们从maven中获取 <!-- lucene中文分词器 --> <dependency&g ...
- lucene全文检索基础
全文检索是一种将文件中所有文本与检索项匹配的文字资料检索方法.比如用户在n个小说文档中检索某个关键词,那么所有包含该关键词的文档都返回给用户.那么应该从哪里入手去实现一个全文检索系统?相信大家都听说过 ...
- 全文检索 Lucene(4)
经过了前面几篇文章的学习,我们基本上可以适用Lucene来开发我们的站内搜索应用了.但是观察一下目前的主流的搜索引擎,我们会发现查询结果会有高亮的显示效果.所以,今天我们就来学习一下,给Lucene添 ...
- 全文检索 Lucene(3)
看完前两篇博客之后,想必大家对于Lucene的使用都有了一个比较清晰的认识了.如果对Lucene的知识点还是有点模糊的话,个人建议还是先看看这两篇文章. 全文检索 Lucene(1) 全文检索 Luc ...
- 全文检索Lucene (2)
接着全文检索Lucene (1) . 下面我们来深入的研究一下,如何使用Lucene! 从全文检索Lucene (1)中我们可以看出,Lucene就好比一个双向的工作流,一方面是对索引库的维护,另一方 ...
- 全文检索Lucene (1)
Lucene是apache开源的一个全文检索框架,很是出名.今天先来分享一个类似于HelloWorld级别的使用. 工作流程 依赖 我们要想使用Lucene,那就得先引用人家的jar包了.下面列举一下 ...
随机推荐
- CentOS7自动补齐
cenos7,最小安装,做服务器嘛.但是发现tab键的自动补齐功能没有:其实可以直接把centos7作为yum源,然后直接安装bash-completion yum install -y bash- ...
- Eureka详解
该章节紧接第三章,主要是对一些理论上的指导,帮助更好的理解服务治理. 基础架构 eureka服务治理的基础架构包含三个要素: 1)服务注册中心:eureka提供服务端,提供服务的注册与发现功能. 注: ...
- Log4net系统日志
首先:引用Log4net.dll,按照说明进行web.config配置 然后:在Global中写入: protected void Application_Start(object sender, E ...
- Dubbo入门之一:实例1
原文地址:http://blog.csdn.net/ruishenh/article/details/23180707?utm_source=tuicool 1. 概述 Dubbo是一个分布式服务 ...
- Java-API:java.util.map
ylbtech-Java-API:java.util.map compact1, compact2, compact3 java.util Interface Map<K,V> Type ...
- 转:InnoDB Page Structure(InnoDB页面结构详解)
InnoDB Page Structure(InnoDB页面结构详解) 此转载自登博的博客,给大家分享.
- Excel开发学习笔记:新建文档级的excel解决方案
工作中遇到一个数据处理自动化的问题,于是打算开发一个基于excel的小工具.在业余时间一边自学一边实践,最近终于完成了雏形.抽空把一些知识写下来以备今后参考,因为走的是盲人摸象的野路子,幼稚与错误请多 ...
- 9个步骤:教你设计出优秀的MMORPG副本关卡
转自:http://www.gameres.com/664485.html 副本的定义 以一张场景地图为原型,针对单个玩家.队伍或者团队生成的一个实例,包含完整的开启关闭.怪物刷新.进度记录等逻辑. ...
- Py修行路 Matplotlib 绘图及可视化模块
Matplotlib是一个强大的Python绘图和数据可视化的工具包. 安装方法:pip install matplotlib 引用方法:import matplotlib.pyplot as plt ...
- hadoop 常用端口 及模块介绍
50070 namenode http port 50075 datanode http port 50090 ...