/**
*
* @author Q.Wong [2010-12-17]
*
*/
public class TestInvoker {
private Logger logger = LogManager.getLogger(TestInvoker.class);
/**
* 索引保存在磁盘目录
*/
@Test
public void testFSDirectory() {
String indexDir = "d:\\temp\\index";
String sourceDir = "d:\\temp\\TestLucene";
String field = "contents";
String keyWord = "河蟹";
Analyzer analyzer = new PaodingAnalyzer();
try {
/** Index **/
IndexWriter writer = IndexManager.getFSDirectoryIndexWriter(
indexDir, analyzer);
long l1 = System.currentTimeMillis();
IndexManager.indexDocs(new File(sourceDir), writer, true);
long l2 = System.currentTimeMillis();
logger.info("Indexed " + writer.numDocs() + " files in ["
+ (l2 - l1) + "] milliseconds.");
writer.optimize();
writer.close();
/** Query **/
IndexReader reader = IndexManager
.getFSDirectoryIndexReader(indexDir);
Searcher searcher = new IndexSearcher(reader);
long l3 = System.currentTimeMillis();
TopDocs resultDocs = QueryManager.doQuery(analyzer, searcher, field, keyWord, 10);
long l4 = System.currentTimeMillis();
logger.info("Found " + resultDocs.totalHits
+ " document(s) matched query '" + keyWord + "' in ["
+ (l4 - l3) + "] milliseconds.");
searcher.close();
reader.close();
QueryManager.resolvedResults(resultDocs, searcher);
} catch (CorruptIndexException e) {
e.printStackTrace();
} catch (LockObtainFailedException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (ParseException e) {
e.printStackTrace();
}
}
/**
* 索引保存在内存
* 查询并高亮关键字
*/
@Test
public void testRAMDirectory() {
String sourceDir = "d:\\temp\\TestLucene\\text.txt";
Directory ramDir = new RAMDirectory();
Analyzer analyzer = new PaodingAnalyzer();
try {
/** Index **/
IndexWriter writer = IndexManager.getRamDirIndexWriter(ramDir,
analyzer);
long l1 = System.currentTimeMillis();
IndexManager.indexDocs(new File(sourceDir), writer, true);
long l2 = System.currentTimeMillis();
logger.info("Indexed " + writer.numDocs() + " files in ["
+ (l2 - l1) + "] milliseconds.");
writer.optimize();
writer.close();
/** Query **/
IndexReader reader = IndexManager.getRamDirIndexReader(ramDir);
QueryManager.doQuery(analyzer, reader, "contents", "河蟹", 10);
reader.close();
} catch (CorruptIndexException e) {
e.printStackTrace();
} catch (LockObtainFailedException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (ParseException e) {
e.printStackTrace();
} catch (InvalidTokenOffsetsException e) {
e.printStackTrace();
}
}