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

ezykj2lf  于 2022-11-07  发布在  Lucene
关注(0)|答案(1)|浏览(193)

我正在做一个任务,我需要使用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());
        }
    }

我使用的是带有Java8的Lucene 8.11.1版。
问题是:是否可以在Lucene中读取/查找/搜索由其他应用程序写入的文件的文本,并通过其他应用程序进行搜索。如果可以,请提供如何操作的指针?
阿图尔

ctzwtxfj

ctzwtxfj1#

我发现了问题并修复了它。
我在字段“requiredtext”中查找数据,但索引器不会存储该字段的数据,就像在索引时,它不会设置该字段的属性**“TextField.Store.YES”**,这就是我无法获取所查找字段的数据的原因。
我获取了为其设置了属性的其他字段的数据。
我的问题是,是否有可能搜索其他应用程序创建的其他文件的数据?所以答案是肯定的。@andrewJames的答案有助于证明这一点。

相关问题