lucene的一段测试代码
2015-04-07 17:11
176 查看
package com.test.cache.file;
import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.document.Field.Store;
import org.apache.lucene.document.LongField;
import org.apache.lucene.document.StoredField;
import org.apache.lucene.index.DirectoryReader;
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.classic.ParseException;
import org.apache.lucene.queryparser.classic.QueryParser;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.ScoreDoc;
import org.apache.lucene.search.TopDocs;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.FSDirectory;
import org.apache.lucene.util.Version;
public class IndexTest {
private static SimpleDateFormat dateFormat = new SimpleDateFormat("yyMMdd");
public static void writeIndex() {
String date = dateFormat.format(new Date());
File file = getIndexDir(date);
try {
Directory dir = FSDirectory.open(file);
Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_43);
IndexWriterConfig iwc = new IndexWriterConfig(Version.LUCENE_43,
analyzer);
iwc.setOpenMode(OpenMode.CREATE);
IndexWriter writer = new IndexWriter(dir, iwc);
Document doc = new Document();
byte[] pbContents = "warm up lucene".getBytes();
Field id = new LongField("id", 123456, Store.YES);
Field msg = new StoredField("msg", pbContents);
doc.add(id);
doc.add(msg);
writer.addDocument(doc);
writer.commit();
writer.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private static File getIndexDir(String date) {
File idxDir = new File("../data/" + date);
if (!idxDir.exists()) {
idxDir.mkdirs();
}
return idxDir;
}
public static void search() {
String date = dateFormat.format(new Date());
File file = getIndexDir(date);
try {
IndexReader reader = DirectoryReader.open(FSDirectory.open(file));
IndexSearcher searcher = new IndexSearcher(reader);
Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_43);
QueryParser parser = new QueryParser(Version.LUCENE_43, "id",
analyzer);
Query query = parser.parse("123456");
TopDocs tops = searcher.search(query, 10);
for(ScoreDoc sc : tops.scoreDocs){
Document doc = searcher.doc(sc.doc);
System.out.println(doc.getField("id").stringValue());
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void main(String[] args) {
writeIndex();
search();
}
}
import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.document.Field.Store;
import org.apache.lucene.document.LongField;
import org.apache.lucene.document.StoredField;
import org.apache.lucene.index.DirectoryReader;
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.classic.ParseException;
import org.apache.lucene.queryparser.classic.QueryParser;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.ScoreDoc;
import org.apache.lucene.search.TopDocs;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.FSDirectory;
import org.apache.lucene.util.Version;
public class IndexTest {
private static SimpleDateFormat dateFormat = new SimpleDateFormat("yyMMdd");
public static void writeIndex() {
String date = dateFormat.format(new Date());
File file = getIndexDir(date);
try {
Directory dir = FSDirectory.open(file);
Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_43);
IndexWriterConfig iwc = new IndexWriterConfig(Version.LUCENE_43,
analyzer);
iwc.setOpenMode(OpenMode.CREATE);
IndexWriter writer = new IndexWriter(dir, iwc);
Document doc = new Document();
byte[] pbContents = "warm up lucene".getBytes();
Field id = new LongField("id", 123456, Store.YES);
Field msg = new StoredField("msg", pbContents);
doc.add(id);
doc.add(msg);
writer.addDocument(doc);
writer.commit();
writer.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private static File getIndexDir(String date) {
File idxDir = new File("../data/" + date);
if (!idxDir.exists()) {
idxDir.mkdirs();
}
return idxDir;
}
public static void search() {
String date = dateFormat.format(new Date());
File file = getIndexDir(date);
try {
IndexReader reader = DirectoryReader.open(FSDirectory.open(file));
IndexSearcher searcher = new IndexSearcher(reader);
Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_43);
QueryParser parser = new QueryParser(Version.LUCENE_43, "id",
analyzer);
Query query = parser.parse("123456");
TopDocs tops = searcher.search(query, 10);
for(ScoreDoc sc : tops.scoreDocs){
Document doc = searcher.doc(sc.doc);
System.out.println(doc.getField("id").stringValue());
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void main(String[] args) {
writeIndex();
search();
}
}
相关文章推荐
- 测试 加入一段代码的效果
- 一段测试网络是否连通的代码
- Lucene 3.5 测试代码
- 测试一段iOS代码运行时间的两种方法
- 一段简单的压力测试代码
- 没有的测试的一段代码
- 一段简单的代码用来在网页上测试javascript程序
- 关于标识唯一性的一段测试代码
- 一段XSLT转换XML节点名的测试代码
- 打印的一段代码测试研究
- VC下测试一段代码运行时间
- 测试一段程序代码执行时间的方法
- 测试一段程序代码执行时间的方法
- lucene 自动采集代码,我自己测试的
- Lucene 3.5 测试代码
- 一段小的 shellcode 测试 代码
- 测试锚点的一段代码
- c# 计算程序执行时间,计算一段代码执行所用的时间,测试效率
- 手机端测试touch的一段代码
- 一段测试NSArray和NSDictionary的代码