Apache Lucene インデックスからクエリを検索しようとしています。検索で大量の結果が返ってきたので、JTable
Swing を使用して結果を入力する必要があります。ループを使用して、Apache Lucene インデックスからオブジェクト行を抽出しています。
上記の理由により、何千ものレコードがある場合、 table のレコードを埋めるのに時間がかかります。次のコードを使用しています。ループを実行せずにタスクを達成する他の方法はありますか?
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();
}