Lucene3.6.1实例

本文详细介绍了如何使用Lucene3.6.1构建全文索引,并通过查询实现文本检索。包括从硬盘读取目录、创建索引、添加文档、查询与输出结果的过程。
//Lucene 3.6.1 实例:
public class LuceneTest{
        public static void main(String[] args) throws Exception {
			File file = new File("E:\\Workspaces\\LuceneAnalyzer\\Index");
            //从硬盘读取目录.
            Directory dir = FSDirectory.open(file);
			//传入版本号,分词器.
			IndexWriterConfig iwc = new IndexWriterConfig(Version.LUCENE_36,analyzer);
			iwc.setOpenMode(OpenMode.CREATE);			//即创建新索引文件.
//			iwc.setOpenMode(OpenMode.CREATE_OR_APPEND);	//表示创建或追加到已有的索引文件.
			//传入目录和写入配置.
			IndexWriter indexWriter = new IndexWriter(dir, iwc);
		
			//创建文档对象.
			Document doc = new Document();
			//写入数据
			doc.add(new Field("gid", "1", Store.YES , Index.ANALYZED));
			doc.add(new Field("content", "中文分词", Store.YES , Index.ANALYZED));
			//添加到文档             
			indexWriter.addDocument(doc);
			//一定要关闭写入器, 不然是不会被写入到硬盘的.
			indexWriter.close();
		
	        //创建一个读入器.
			IndexReader indexReader = IndexReader.open(FSDirectory.open(file));
			//创建一个查询器.传入读入器.
			IndexSearcher indexSerach = new IndexSearcher(indexReader);
			//创建一个查询,传入版本号,要查询的范围,分词器.
			QueryParser queryParser = new QueryParser(Version.LUCENE_36, "content", analyzer);
			//要查询的内容.
			Query query = queryParser.parse("中文");
			//开始查询.传入查询,最大返回条数.
			TopDocs topDocs = indexSerach.search(query, 10);
		
			System.out.println("匹配条数:" + topDocs.totalHits);
			indexSerach.close();
			indexReader.clone();
		
                    //遍历.
			for (ScoreDoc topDoc : topDocs.scoreDocs) {
				int docid = topDoc.doc;
				System.out.println(docid);		//文档内部编号.
				Document tempdoc = indexSerach.doc(docid);
				System.out.println(tempdoc.get("content"));
		}
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值