基本上,我只想对给定的lucene索引进行多次搜索。
因此,我使用最终的“分析器”,“读者”,“搜索器”和“解析器”字段创建了一个类数据(所有这些都在构造函数中正确初始化)。该类还提供了一种搜索索引的“搜索”方法。这些都显示在下面的代码中。
然而问题是,在多次调用“搜索”(使用不同的查询)后,内存逐渐变满。我总是在使用相同的查询时没有检查会发生什么。我已经四处寻找可能的答案,似乎最好的做法是让搜索者等在不同的搜索中保持开放状态,所以我想这不是问题所在。还有其他想法吗?
谢谢,约阿希姆。
(示例)代码:
public class Data {
private final Analyzer analyzer;
private final IndexReader reader;
private final IndexSearcher searcher;
private final QueryParser parser;
public Data(String indexPath, Analyzer analyzer) throws IOException {
this.analyzer = analyzer;
Directory directory = FSDirectory.open(indexPath);
reader = new FilterIndexReader(IndexReader.open(directory, true));
directory.close();
searcher = new IndexSearcher(reader);
parser = new QueryParser(Version.LUCENE_CURRENT,
FieldName.CONTENT, analyzer);
}
public TopDocs search(String line, Integer maxHits) throws ... {
Query query = parser.parse(QueryParser.escape(line));
return searcher.search(query, maxHits);
}
}