/**
* 测试索引
* @author Administrator
*
*/
import java.io.*;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.index.Term;
import org.apache.lucene.index.TermDocs;
public class indexTest
{
//声明索引路劲常量
private static final String INDEX_STORE_PATH = "D:\\test";
public static void main(String[] args)throws IOException
{
indexwriter();
indexrriter();
System.out.println("1.&&&&&&&&&&&&&&&&&&&&&&&&&&&&");
indexwriterONE();
indexrriter();
//System.out.println("2.&&&&&&&&&&&&&&&&&&&&&&&&&&&&");
//indexwriterONE();
//indexrriter();
while(true)
{
System.out.println("请输入查找的关键字:");
seacher();
}
}
/*
*创建索引
*/
public static void indexwriter() throws IOException
{
IndexWriter writer=new IndexWriter( INDEX_STORE_PATH ,new StandardAnalyzer(),true);
writer.setUseCompoundFile(false);
//创建三个文档
Document doc1=new Document();
Document doc2=new Document();
Document doc3=new Document();
//创建域
Field f1=new Field("bookname","钢铁是怎么样练成的",Field.Store.YES,Field.Index.TOKENIZED);
Field f2=new Field("bookname","英雄的女儿",Field.Store.YES,Field.Index.TOKENIZED);
Field f3=new Field("bookname","篱笆女人和狗",Field.Store.YES,Field.Index.TOKENIZED);
//将域分别添加到文档中
doc1.add(f1);
doc2.add(f2);
doc3.add(f3);
//将文件写入到索引写作器,将三个文档写入磁盘
writer.addDocument(doc1);
writer.addDocument(doc2);
writer.addDocument(doc3);
//关闭写作器
writer.close();
System.out.println("索引建立完毕-------");
}
/*
*使用IndexReader读取索引
*/
public static void indexrriter()
{
try{
//创建阅读器
IndexReader reader =IndexReader.open(INDEX_STORE_PATH);
//显示所有的document文档
System.out.println("索引文档列表为:");
for(int i=0;i<reader.numDocs();i++)
System.out.println(reader.document(i));
//输出当前索引的版本号
System.out.println("版本号:" + reader.getVersion());
//当前索引的文档数
System.out.println("索引内的文档数有:" + reader.numDocs());
//关闭reader
reader.close();
}
catch (Exception e)
{
e.printStackTrace();
}
}
/*
*再添加一个文档到索引
*/
static void indexwriterONE()
{
try
{
//由于只是添加,所以在IndexWriter()中的indexCreate参数设置为false
IndexWriter writer=new IndexWriter( INDEX_STORE_PATH ,new StandardAnalyzer(),false);
writer.setUseCompoundFile(false);
Document doc4=new Document();
Field f4=new Field("bookename","钢铁战士",Field.Store.YES,Field.Index.TOKENIZED);
doc4.add(f4);
writer.addDocument(doc4);
writer.close();
}
catch(Exception e)
{
e.printStackTrace();
}
}
/*
*构造条词并在索引中查找(测试索引结果)
*
**/
static void seacher() throws IOException
{
//创建阅读器
IndexReader reader =IndexReader.open(INDEX_STORE_PATH);
//输入关键字
BufferedReader KBreader= new BufferedReader(new InputStreamReader(System.in));
String keyword=KBreader.readLine();
System.out.println("查找条词"+ "'"+ keyword +"'");
//构造条词
Term term= new Term("bookname",keyword);
TermDocs docs=reader.termDocs(term);
int i=0;
while(docs.next())
{
i+=1;
System.out.println("--------------");
System.out.println("含有所查找的<"+ term +">的document的编号是:"+docs.doc());
System.out.println(term+"在文档中出现的次数为"+docs.freq());
System.out.println("--------------");
}
System.out.println("-------12133-------"+i);
//关闭KBreader和reader
//KBreader.close();
reader.close();
}
}
本文链接