日期:2014-05-19 浏览次数:51006 次
/**
* 搜索
* @param type 搜索的类型 content or path or filename
* @param content 搜索的条件
* @param size 搜索数据的条数
*/
public void sercher(){
try {
//1、创建 Directory
Directory directory = FSDirectory.open(new File("D:/lucene/index01")); //创建在硬盘中
//2、创建 IndexReader 读取所有索引
IndexReader reader=IndexReader.open(directory);
//3、根据IndexReader 创建IndexSearcher
IndexSearcher searcher=new IndexSearcher(reader);
//4、创建parser来确定 搜索文件的内容 第二个参数表示搜索的域
QueryParser parser=new QueryParser(Version.LUCENE_35, "content", new StandardAnalyzer(Version.LUCENE_35));
// 查询内容中包含参数 content的文档
Query query=parser.Query("java");
//5、根据 searcher搜索并返回TopDocs
TopDocs tds=searcher.search(query, 10); // 取10条数据
//6、根据TopDocs获取ScoreDoc对象
ScoreDoc[] sds=tds.scoreDocs; //所有文档所存的id号
for (ScoreDoc sd : sds) {
//7、根据searcher和 ScoreDoc获取具体的Document对象
Document d=searcher.doc(sd.doc);
//8、根据Document 对象 获取需要的值
System.out.println(d.get("filename")+"["+d.get("path")+"]");
}
//9、关闭reader
reader.close();
} catch (ParseException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
org.apache.lucene.queryParser.ParseException: Encountered "<EOF>" at line 1, column 0.
Was expecting one of:
<NOT> ...
"+" ...
"-" ...
"(" ...
"*" ...
<QUOTED> ...
<TERM> ...
<PREFIXTERM> ...
<WILDTERM> ...
"[" ...
"{" ...
<NUMBER> ...
<TERM> ...
"*" ...
at org.apache.lucene.queryParser.QueryParser.generateParseException(QueryParser.java:1818)
at org.apache.lucene.queryParser.QueryParser.jj_consume_token(QueryParser.java:1700)
at org.apache.lucene.queryParser.QueryParser.Clause(QueryParser.java:1327)
at org.apache.lucene.queryParser.QueryParser.Query(QueryParser.java:1237)
at org.itat.test.HelloLucene.sercher(HelloLucene.java:99)
at org.itat.test.TestLucene.testSearcher2(TestLucene.java:26)
at org.itat.test.TestLucene.main(TestLucene.java:36)