目前,我正在使用lucence 7.4,我的要求是在特定的根文件夹下查找敏感关键字的出现。
首先,我们想知道所有电子邮件ID都记录在哪里。 使用UAX29URLEmailAnalyzer之后,我可以缩小存在该文件的文件列表。
从主要方法中,我正在使用以下正则表达式来标识电子邮件ID:
tester.search("[a-z\\_\\-\\.\\%\\+]+\\@[a-z]+.[a-z]{3}");
事后搜索方法给了我具有该模式的文件列表。
private void search(String searchQuery1) throws IOException, ParseException, org.apache.lucene.queryparser.classic.ParseException {
searcher = new Searcher(indexDir);
long startTime = System.currentTimeMillis();
//create a term to search file name
Term term1 = new Term(LuceneConstants.CONTENTS, searchQuery1);
//create the term query object
Query query1 = new RegexpQuery(term1);
TopDocs hits = searcher.search(query1);
for(ScoreDoc scoreDoc : hits.scoreDocs) {
Document doc = searcher.getDocument(scoreDoc);
System.out.println("File: "
+ doc.get(LuceneConstants.FILE_PATH));
}
搜索非常快,并在2秒内完成。 我不知道有什么方法可以打印文件中匹配的电子邮件ID?
另外,我能得到具有匹配内容的整行吗?
请指导。