私はテキスト、単語ファイルを索引付けし、これらのファイル内のいくつかのコンテンツを検索しようとしています。特定の文字列を検索しても問題ありませんが、正規表現を使用して検索すると、それ以上は機能しません。以下では、説明するための重要なコードをいくつか挙げます。ルシェンでの検索に正規表現を使用できません
インデックス機能:私は、クエリを構築するためにqueryParseを使用しています
// 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);
}
}
は、クエリは、単に数の '\ dの{16}' のようなRegexQueryになります。
検索機能
public static TopDocs getResults(IndexSearcher searcher, Query query) throws IOException {
TopDocs docs = searcher.search(query, 10);
return docs;
}
TopDocsのtotalHitは、私が何を期待されていない、0です。検索されるファイルがないようです。このコンテンツは、指定された正規表現を満たす必要があります。
私はグーグルで試してみましたが、まだ有効な解決策が見つかりませんでした。誰もtotalHitが0を返す理由についての提案を提供できますか?ありがとう。
申し訳ありませんが、私は間違って貼り付けます。コードは/ \ d {16} /です。レギュラーはOKです。 – neal