我试图找出正确的方式来多次运行应用程序时只读取一次Lucene索引,我该如何在Java中做到这一点?

因为索引数据不会改变,所以不必每次都读取它们。有人能解释一下只读一次的逻辑吗?谢谢

更新:

public List initTableObject() throws IOException {
        Directory fSDirectory = FSDirectory.open(new File(INDEX_NAME));
        List<String>termList = new ArrayList<String>();

        RAMDirectory directory = new RAMDirectory(fSDirectory);

        IndexReader iReader = IndexReader.open(fSDirectory);
        FilterIndexReader fReader = new FilterIndexReader(iReader);



    //  int numOfDocs = fReader.numDocs();
        TermEnum terms = fReader.terms();


        while (terms.next()){
            Term term = terms.term();
            String termText = term.text();
            termList.add(termText);
            }
            iReader.close();
            return termList;
    }


我对Lucene真的很陌生,所以这就是到目前为止我对RAMDirectory还不了解的东西。

此方法检索列表,因为我需要此索引列表才能与我拥有的某些文件进行比较。如何将该列表存储到RAM,以便可以在应用程序的其他部分中使用它进行比较?

最佳答案

我认为this question上的答案可能有用。

07-27 13:35