Lucene使用不同的文件来搜索文本

Lucene to use different files to search text

我正在处理一项需要使用 lucene 搜索文本的任务。但这里的要求是其他应用程序使用已经创建的段、.si、.cfe 和.cfs 文件。

我能够获取这些文件,但在搜索文本时它不会显示结果。

用于搜索的代码是:

    public void searchText(String indexPath, String searchString) {
        try {
            Analyzer analyzer = new StandardAnalyzer(); 
            File indexDirectory = new File(indexPath);
            Directory directory = FSDirectory.open(indexDirectory.toPath());
            IndexReader directoryReader = DirectoryReader.open(directory);
            IndexSearcher searcher = new IndexSearcher(directoryReader);
            QueryParser parser = new QueryParser("requiredtext", analyzer);
            Query query = parser.parse(searchString);
            System.out.println(query);
            // Parse a simple query that searches for "text":
            ScoreDoc[] hits = searcher.search(query, 10).scoreDocs;
            // Iterate through the results:
            for (int i = 0; i < hits.length; i++) {
                Document hitDoc = searcher.doc(hits[i].doc);
            }

            analyzer.close();
            directoryReader.close();
            directory.close();
        }
        catch (Exception ex){
            System.out.println("Exception - "+ex.getMessage());
        }
    }

我正在使用 Lucene 版本 8.11.1 Java8。

问题是:在 Lucene 中是否可以 read/find/search 由其他应用程序写入文件并由其他应用程序搜索的文本。如果是请指点如何?

阿图尔

我发现了问题并修复了它。

我正在寻找字段“requiredtext”中的数据,但索引器不会像索引时那样存储该字段的数据它不会为此字段设置 属性 "TextField.Store.YES",这就是我无法获得我正在寻找的字段的数据的原因。

我得到了设置 属性 的其他字段的数据。

我的问题是是否可以搜索由其他应用程序创建的其他文件的数据?所以答案是肯定的。 @andrewJames 的回答有助于证明这一点。