java全文检索 lucene_如何用java实现lucene(全文检索引擎)

如何用java实现lucene(全文检索引擎)

前提

lucene有7个包需要导入:analysis,document,index,queryParser,search,store,util

建立索引

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", "60", Field.Store.YES, Field.Index.ANALYZED,

Field.TermVector.WITH_POSITIONS_OFFSETS));

writer.addDocument(doc);

writer.optimize(); //优化

writer.close();

搜索

IndexSearcher searcher= new IndexSearcher("E:/index") Query query = new TermQuery(new Term("title", "lucene"));//单个字节查询

//Query query = new FuzzyQuery(new Term("title", "lucena"));//模糊查询

//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(qson1, 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 = 0; i < hits.length(); i++) {

Document d = hits.doc(i);

String title= d.get("title");

System.out.print(title+ " ");

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值