我想索引文本,單詞文件並搜索這些文件中的某些內容。當我搜索一個特定的字符串時可以,但是當我嘗試使用正則表達式進行搜索時,它將不再起作用。在下面,我將列出一些關鍵的解釋代碼。不能使用正則表達式在lucene中搜索
的指數函數:
// FileBean is the class contains the file path,
// file content, file lastModified information
public void indexDoc(IndexWriter writer, FileBean t) throws Exception {
Document doc = new Document();
System.out.println(t.getPath());
doc.add(new StringField(LuceneConstants.PATH, t.getPath(), Field.Store.YES));
doc.add(new LongPoint(LuceneConstants.MODIFIED, t.getModified()));
doc.add(new TextField(LuceneConstants.CONTENT, t.getContent(), Field.Store.NO));
if (writer.getConfig().getOpenMode() == IndexWriterConfig.OpenMode.CREATE){
writer.addDocument(doc);
} else{
writer.updateDocument(new Term(LuceneConstants.PATH, t.getPath()), doc);
}
}
我使用queryParse建立查詢,查詢將是一個RegexQuery就像 '\ d {16}' 了許多。
搜索功能
public static TopDocs getResults(IndexSearcher searcher, Query query) throws IOException {
TopDocs docs = searcher.search(query, 10);
return docs;
}
TopDocs的totalHit是0,這是不是我所期望。在我看來,沒有文件被搜索。此內容應滿足提供的給定正則表達式。
我試過Google搜索它,但仍然沒有找到有效的解決方案。任何人都可以提供任何建議爲什麼totalHit返回0?謝謝。
對不起,我貼錯了。代碼只是/ \ d {16} /。常規是好的。 – neal