現在、RamDirectory の Lucene インデックス (v. 4) からすべてのドキュメントを取得しようとしています。
インデックスの作成では、次の addDocument 関数が使用されます。
public void addDocument(int id, String[] values, String[] fields) throws IOException{
    Document doc = new Document();
    doc.add(new IntField("getAll", 1, IntField.TYPE_STORED));    
    doc.add(new IntField("ID", id, IntField.TYPE_STORED));                                              
    for(int i = 0; i < fields.length; i++){
        doc.add(new TextField(fields[i], values[i], Field.Store.NO));
    }
    writer.addDocument(doc);
}
すべてのドキュメントに対してこれを呼び出した後、ライターは閉じられます。ドキュメントに追加された最初のフィールドからわかるように、すべてのドキュメントを簡単に取得できるように「getAll」フィールドを追加しました。私の理解が正しければ、クエリ "getAll:1" はインデックス内のすべてのドキュメントを返すはずです。しかし、そうではありません。そのために次の関数を使用しています。
public List<Integer> getDocIds(int noOfDocs) throws IOException, ParseException{
    List<Integer>   result    = new ArrayList<Integer>(noOfDocs);
    Query           query     = parser.parse("getAll:1");
    ScoreDoc[]      docs      = searcher.search(query, noOfDocs).scoreDocs;
    for(ScoreDoc doc : docs){
        result.add(doc.doc);
    }
    return result;
}
noOfDocs は、索引付けされたドキュメントの数です。もちろん、IndexSearcher を作成するときに同じ RamDirectory を使用しました。解析されたクエリを手動で作成された TermQuery に置き換えても、どちらも役に立ちませんでした。クエリは結果を返しません。
誰かが私のエラーを見つけるのを手伝ってくれることを願っています. ありがとう