我用的是lucene2.2.0,
最近要做一个站内的全文检索功能,下面把实现的代码贴出来,实现了索引的创建、检索和删除功能,并可以从检索结果去查询数据库~ .我主要是我系统的700W数据进行检索.下面主要是供应信息做为例子,(如有问题,多多评论,虚心接受).
// 创建索引
IndexWriter writer;
String indexDir = "d:""index/sellindex";
boolean indexExist = indexExist(indexDir);
if (indexExist) {
writer = new IndexWriter(indexDir, new StandardAnalyzer(),
false);
} else {
writer = new IndexWriter(indexDir, new StandardAnalyzer(), true);
}
re为数据记录集,这里就不介绍了.
while (re.next()) {
//Field.Store.YES表示是不是被保存,
//Field.Index.no表示是不是被索引.
doc.add(new Field("vcsid", re.getString("vcsid"),
Field.Store.YES, Field.Index.no));
//vcareacode是我的地区编号,因为我搜索要作为条件搜索.
doc.add(new Field("vcareacode", re.getString("vcareacode"),
Field.Store.YES, Field.Index.TOKENIZED));
//这里isort后面排序用的
doc.add(new Field("isort", re.getString("isort"),
Field.Store.YES, Field.Index.TOKENIZED));
//clcontent是我的内容,因为我搜索要作为条件搜索.
doc.add(new Field("clcontent", re.getString("clcontent"),
Field.Store.YES, Field.Index.TOKENIZED));
writer.addDocument(doc);
}
如果记录较多时,就循环添加
最后
writer.close();
判断索引存在方法
public static boolean indexExist(String indexDir) {
return IndexReader.indexExists(indexDir);
}
这样就在索引就建好了.
// 索引搜索的实现(我这里已搜索内容和地区)
IndexSearcher indexSearcher;
ndexSearcher = new IndexSearcher("d:""index/sellindex");
Document doc = null;
org.apache.lucene.search.BooleanQuery bquery=new org.apache.lucene.search.BooleanQuery();
//我这里clcontent作为关键字来搜索
QueryParser qa=new QueryParser("clcontent",new StandardAnalyzer());
Query query=qa.parse(keyword);
//这里指定条件都满足搜索
bquery.add(query,org.apache.lucene.search.BooleanClause.Occur.MUST);
// vcareacode作为条件来查询,如果为NULL和 AA时表示查找所有的
if(request.getParameter("vcareacode")!=null){
if(!request.getParameter("vcareacode").toString().equals("aa")){
qa=new QueryParser("vcareacode",new StandardAnalyzer());
query=qa.parse(request.getParameter("vcareacode")+"*");
bquery.add(query,org.apache.lucene.search.BooleanClause.Occur.MUST);
vcareacode=request.getParameter("vcareacode");
}
}"
//这里加的是高亮结果显示
Highlighter highlighter = new Highlighter(new SimpleHTMLFormatter("<font color=red><B>","</B></font>"),new QueryScorer(bquery));
highlighter.setTextFragmenter(new SimpleFragmenter(80));
org.apache.lucene.document.Document dc=null;
Hits hits = indexSearcher.search(bquery,new Sort(new SortField("isort",true)));
org.apache.lucene.analysis.standard.StandardAnalyzer analyzer = new org.apache.lucene.analysis.standard.StandardAnalyzer();
//这里hits.length()可以得到有多少记录.,I表示第几条记录
dc = hits .doc(i);
//高亮显示类容
org.apache.lucene.analysis.TokenStream tokenStream = analyzer.tokenStream("clcontent", new java.io.StringReader(dc.get("clcontent")));
System.out.pritf(highlighter.getBestFragment(tokenStream,li.doc(i).get("clcontent"))) ;
dc.get("vcareacode")显示类别
这样就可以从建索引,到搜索.(有问题,发表下评论,我会回的)这只是简单的,我也在苦研中,要睡了,还要上班,有时间会写下更新索引,增加,删除,修改,还有一些优化方法..
出自http://www.blogjava.net/sundc/archive/2008/07/17/155129.html
分享到:
相关推荐
Lucene实现全文检索
Lucene4做的全文检索,支持文件和数据库
基于Lucene的全文检索系统研究与开发基于Lucene的全文检索系统研究与开发基于Lucene的全文检索系统研究与开发
使用zend Framework的lucene进行全文检索
lucenetest.rar,lucene,全文检索,lucene例子 lucenetest.rar,lucene,全文检索,lucene例子lucenetest.rar,lucene,全文检索,lucene例子
编写搜索引擎时可以使用,希望能够帮到大家,jar包对初学者有用
基于struts2的全文检索系统,实现了文件上传和下载,并实现对上传的文件进行检索。
基于Lucene的全文检索系统,对本地文件的全文检索,方便搜索自己的文档
Lucene全文检索案例Lucene全文检索案例Lucene全文检索案例Lucene全文检索案例
lucene全文检索需要的三个jar包:lucene-analyzers-3.6.1.jar lucene-core-3.6.1.jar lucene-highlighter-3.6.1.jar
Lucene 是一个用Java 写的全文索 引引擎工具包,访问索引时间快,支持多用户访问,可以跨平台使用。文中研究了Lucene 系统结构和数据流,分析了 Lucene 的索引文件格式,实现了一个基于Lucene 文档检索的应用实例。
lucene3.5全文检索案例lucene+demo
lucene全文检索全面教程,基于JAVA的lucene全文检索全面教程。www.288158.com
本案例通过.Net MVC4基础上,针对Lucene.Net实现全文检索的应用。通过查询数据表中数据,创建索引,通过统一输入框进行全文检索。可以进行对索引的增删改查功能。
Lucene.Net全文检索Demo 和相关帮助文档,功能已完全实现 绝对可以运行 欢迎下载!
基于Lucene的全文检索系统的研究与应用基于Lucene的全文检索系统的研究与应用
OSChina开源社区做的基于Lucene的全文检索的框架,相当于一个全文检索工具,包括索引的创建、更新、搜索,及其他工具类。
基于Lucene的全文检索引擎研究与应用
使用lucene编程实现全文检索数据库内容,程序使用lucene-core-2.4.0以及access数据库
NULL 博文链接:https://1151461406.iteye.com/blog/2388343