1

Apache Lucene インデックスからクエリを検索しようとしています。検索で大量の結果が返ってきたので、JTableSwing を使用して結果を入力する必要があります。ループを使用して、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();
}
4

1 に答える 1