我正在尝试从 Apache Lucene 索引中搜索查询。搜索返回大量结果,我必须JTable
使用 Swing 填写结果。我正在使用循环从 Apache Lucene 索引中提取对象行。
由于上述原因,如果有数千条记录,那么填写表中的记录需要时间,我正在使用以下代码。有没有其他方法可以在不运行循环的情况下完成任务?
try { File indexDir= new File("path of the file")
Directory directory = FSDirectory.open(indexDir);
IndexSearcher searcher = new IndexSearcher(directory, true);
int maxhits=1000000;
QueryParser parser1 = new QueryParser(Version.LUCENE_36, "field",
new StandardAnalyzer(Version.LUCENE_36));
Query qu=parser1.parse("texttosearch");
TopDocs topDocs = searcher.search(, maxhits);
ScoreDoc[] hits = topDocs.scoreDocs;
len = hits.length;
int docId = 0;
Document d;
Vector column_name=new Vector();
column_name.addElement("title");
column_name.addElement("");
// For All Rows Data
Vector row=new Vector();
String filename="";
String titlee="";
Vector newRow=new Vector();
for ( i = 0; i<len; i++) {
docId = hits[i].doc;
d = searcher.doc(docId);
filename= d.get(("fpath"));
titlee=d.get("title");
newRow= new Vector();
newRow.addElement(titlee);
newRow.addElement(filename);
row.addElement(newRow);
}
DefaultTableModel model= new DefaultTableModel(row, column_name);
table.setModel(model);
}
catch(Exception ex)
{
ex.printStackTrace();
}