我正在做一个任务,我需要使用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中读取/查找/搜索由其他应用程序写入的文件的文本,并通过其他应用程序进行搜索。如果可以,请提供如何操作的指针?
阿图尔
1条答案
按热度按时间ctzwtxfj1#
我发现了问题并修复了它。
我在字段“requiredtext”中查找数据,但索引器不会存储该字段的数据,就像在索引时,它不会设置该字段的属性**“TextField.Store.YES”**,这就是我无法获取所查找字段的数据的原因。
我获取了为其设置了属性的其他字段的数据。
我的问题是,是否有可能搜索其他应用程序创建的其他文件的数据?所以答案是肯定的。@andrewJames的答案有助于证明这一点。