今天看了一些lucene3.5的知识,个人感觉,3.5和2.1.0千差万别,今天写一个学习的代码,从学习资料上找了一个例子,敲出来看看。
程序一般,这是我写的第一个lucene程序。
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
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.IndexWriterConfig.OpenMode;
import org.apache.lucene.queryParser.MultiFieldQueryParser;
import org.apache.lucene.queryParser.ParseException;
import org.apache.lucene.queryParser.QueryParser;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.Query;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.FSDirectory;
import org.apache.lucene.util.Version;
public class LuceneUtils {
//当前目录位置
public static final String USERDIR = System.getProperty("user.dir");
//存放索引的目录
private static final String INDEXPATH = USERDIR + File.separator + "index";
private static final String INDEXPATH2 = "D:/index";
//使用版本
public static final Version version = Version.LUCENE_35;
/**
* 获取分词器
* */
public static Analyzer getAnalyzer(){
// 分词器
Analyzer analyzer = new StandardAnalyzer(version);
return analyzer;
}
/**
* 创建一个索引器的操作类
*
* @param openMode
* @return
* @throws Exception
*/
public static IndexWriter createIndexWriter(OpenMode openMode)
throws Exception {
// 索引存放位置设置
Directory dir = FSDirectory.open(new File(INDEXPATH));
// 索引配置类设置
IndexWriterConfig iwc = new IndexWriterConfig(version,
getAnalyzer());
iwc.setOpenMode(openMode);
IndexWriter writer = new IndexWriter(dir, iwc);
return writer;
}
/***
* 创建一个搜索的索引器
* @throws IOException
* @throws CorruptIndexException
* */
public static IndexSearcher createIndexSearcher() throws CorruptIndexException, IOException {
IndexReader reader = IndexReader.open(FSDirectory.open(new File(INDEXPATH2)));
IndexSearcher searcher = new IndexSearcher(reader);
return searcher;
}
/**
* 创建一个查询器
* @param queryFileds 在哪些字段上进行查询
* @param queryString 查询内容
* @return
* @throws ParseException
*/
public static Query createQuery(String [] queryFileds,String queryString) throws ParseException{
QueryParser parser = new MultiFieldQueryParser(version, queryFileds, getAnalyzer());
Query query = parser.parse(queryString);
return query;
}
}