Lucene小练八(实现了索引和搜索)(一)

2014-11-24 09:19:26 · 作者: · 浏览: 11
[java]
//主类

package Java.se.lucene;

import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.document.NumericField;
import org.apache.lucene.index.CorruptIndexException;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.IndexWriterConfig;
import org.apache.lucene.index.StaleReaderException;
import org.apache.lucene.index.Term;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.ScoreDoc;
import org.apache.lucene.search.TermQuery;
import org.apache.lucene.search.TopDocs;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.FSDirectory;
import org.apache.lucene.store.LockObtainFailedException;
import org.apache.lucene.store.RAMDirectory;
import org.apache.lucene.util.Version;


public class index {
private String[] ids={"1","2","3","4","5","6"};
private String[] emails={"aa@aa.com","bb@bb.com",
"cc@cc.com","dd@dd.com","ee@ee.com","ff@ff.com"};
private String[] contents={"i like gdsfgfds","i like fsdfs","i like fdsfsd",
"i like fdsfsd","i like like fdfs","i like like like fsefsdfg"};
private int[] attachs={1,2,3,4,5,6};
private String[] names={"liwu","zhangsan","xiaoqinag","laona",
"dabao","lisi"};
private Directory directory=null;
private IndexWriter writer=null;
private Date[] dates=null;
private Map scores=new HashMap();
private static IndexReader reader=null;

public index()
{
setDate();//创建日期
try {
scores.put("aa.com", 2.0f);
scores.put("bb.com", 1.0f);
scores.put("cc.com", 3.0f);
scores.put("dd.com", 4.0f);
scores.put("ee.com", 5.0f);
scores.put("ff.com", 6.0f);
// directory=new RAMDirectory();//从内存打开Directory
Index();
//从硬盘打开Directory
directory=FSDirectory.open(new File("f:/lucene/Index04"));
// reader=IndexReader.open(directory);
} catch (Exception e) {
e.printStackTrace();
}
}
//建立索引
public void Index()
{
Document document=null;
try {
writer=new IndexWriter(directory, new IndexWriterConfig(Version.LUCENE_36,
new StandardAnalyzer(Version.LUCENE_36)));
writer.deleteAll();//更新索引
for(int i=0;i {
document=new Document();
document.add(new Field("id", ids[i],
Field.Store.YES, Field.Index.NOT_ANALYZED_NO_NORMS ));
document.add(new Field("email",emails[i],
Field.Store.YES,Field.Index.NOT_ANALYZED));
document.add(new Field("content", contents[i],
Field.S