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早些版本的写法。lucene3.02的写法有所改变。

Lucene 全文检索 Lucene的使用的更多相关文章

  1. Apache Lucene(全文检索引擎)—创建索引

    目录 返回目录:http://www.cnblogs.com/hanyinglong/p/5464604.html 本项目Demo已上传GitHub,欢迎大家fork下载学习:https://gith ...

  2. Lucene全文检索系列(一)

    1. Lucene简介 Lucene是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎.Lucene以其方便使用.快速实施以及灵活性受到广泛的关注.它可以方便地嵌入到各种应用中实现针对应用的全文 ...

  3. Lucene全文检索技术

    Lucene全文检索技术 今日大纲 ●    搜索的概念.搜索引擎原理.倒排索引 ●    全文索引的概念 ●    使用Lucene对索引进行CRUD操作 ●    Lucene常用API详解 ●  ...

  4. 使用Lucene全文检索并使用中文版和高亮显示

    使用Lucene全文检索并使用中文版和高亮显示 中文分词需要引入 中文分词发的jar 包,咱们从maven中获取 <!-- lucene中文分词器 --> <dependency&g ...

  5. lucene全文检索基础

    全文检索是一种将文件中所有文本与检索项匹配的文字资料检索方法.比如用户在n个小说文档中检索某个关键词,那么所有包含该关键词的文档都返回给用户.那么应该从哪里入手去实现一个全文检索系统?相信大家都听说过 ...

  6. 全文检索 Lucene(4)

    经过了前面几篇文章的学习,我们基本上可以适用Lucene来开发我们的站内搜索应用了.但是观察一下目前的主流的搜索引擎,我们会发现查询结果会有高亮的显示效果.所以,今天我们就来学习一下,给Lucene添 ...

  7. 全文检索 Lucene(3)

    看完前两篇博客之后,想必大家对于Lucene的使用都有了一个比较清晰的认识了.如果对Lucene的知识点还是有点模糊的话,个人建议还是先看看这两篇文章. 全文检索 Lucene(1) 全文检索 Luc ...

  8. 全文检索Lucene (2)

    接着全文检索Lucene (1) . 下面我们来深入的研究一下,如何使用Lucene! 从全文检索Lucene (1)中我们可以看出,Lucene就好比一个双向的工作流,一方面是对索引库的维护,另一方 ...

  9. 全文检索Lucene (1)

    Lucene是apache开源的一个全文检索框架,很是出名.今天先来分享一个类似于HelloWorld级别的使用. 工作流程 依赖 我们要想使用Lucene,那就得先引用人家的jar包了.下面列举一下 ...

随机推荐

  1. flask+blueprint路由配置

    1.flask默认的静态文件和html文件在app应用文件夹里的相应文件夹下:app // Flask||--static ||--templates |静态文件默认的url地址为:url_prefi ...

  2. 表有外键所以delete报错了,这里有2种办法处理:

    表有外键所以delete报错了,这里有2种办法处理: (1)      临时设置外键失效 (2)      删除表涉及到的外键的表的数据 2.外键失效的处理方案 mysql> SET FOREI ...

  3. HDU1584(蜘蛛牌)

    蜘蛛牌 Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submis ...

  4. mysql update不支持子查询更新

    先看示例: SELECT uin,account,password,create_user_uin_tree FROM sys_user 结果: 表中的create_user_uin_tree标识该条 ...

  5. Redis的持久化机制

    持久化机制 RDB:快照模式AOF :日志模式 多数据库– 一个redis服务器内部默认有16个数据,编号О0-15– 默认操作是编号为0的数据库– 可以在命令行用select选择数据库127.0.0 ...

  6. throw和throws的区别和联系

    突然发现今天诗兴大发,看来又得写点内容了. throw和throws对于Java程序员而言它们真的不是很陌生.但对于我这样的选手而言一提到它们的区别和联系就蒙圈了... 为了以后不蒙圈,今天就研究一下 ...

  7. __cdecl & __stdcall calling conventions

    (一) __cdecl: c declaration C语言默认的函数调用方法:所有参数从右到左依次入栈,这些参数由调用者清除,称为手动清栈.C/C++默认的调用方式,可用于函数参数不确定的情况下. ...

  8. Java中Object.hashCode contract

    面试时在这个问题上犯了个错误,只重写了equals方法,而没有覆盖hashCode()方法. 回来重读了Effective Java的Item 9,里面提到Object.hashCode contra ...

  9. 偏好设置(Preference)

    一.Preference简介 (1)偏好设置是专门用来保存应用程序的配置信息的, 一般情况不要在偏好设置中保存其他数据.如果利用系统的偏好设置来存储数据, 默认就是存储在Library/Prefere ...

  10. DAY10-MYSQL表操作

    一 存储引擎介绍 存储引擎即表类型,mysql根据不同的表类型会有不同的处理机制 http://www.cnblogs.com/guoyunlong666/p/8491702.html 二 表介绍 表 ...