gpt4 book ai didi

java - 从apache lucene索引中获取数据并填写到JTable中

转载 作者:太空宇宙 更新时间:2023-11-04 07:41:00 24 4
gpt4 key购买 nike

我正在尝试从 Apache Lucene 索引搜索查询。搜索返回大量结果,我必须使用 Swing 将结果填充到 JTable 中。我正在使用循环从 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();
}

最佳答案

小错误有时会造成大麻烦

  • Vector row = new Vector();应该是Vector<Vector<Object>> row = new Vector<Vector<Object>>();

  • 循环中的第一行 for (i = 0; i < len; i++) {必须是newRow = new Vector();

伪代码

for (i = 0; i < len; i++) {
// must be otherwise first Vector is added forever!!!
newRow = new Vector();

//loop, add elements to one dimensional Vector

// add 1D Vector to 2D Vector used and implemented in JTables API
row.addElement(newRow);
}

关于java - 从apache lucene索引中获取数据并填写到JTable中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16059988/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com