Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从ApacheLucene索引中搜索并按组计算结果_Java_Search_Lucene - Fatal编程技术网

Java 从ApacheLucene索引中搜索并按组计算结果

Java 从ApacheLucene索引中搜索并按组计算结果,java,search,lucene,Java,Search,Lucene,我试图从lucene索引中搜索,但我想筛选此搜索。有两个字段“内容”和“类别”。假设我想搜索包含“运动”的文件,我还想计算a和b类别中的文件数量。我正试图通过以下代码实现这一点。但问题是,若有数以百万计的记录,那个么由于循环执行,它会变慢,请给我建议另一种实现该任务的方法 尝试{File indexDir=新文件(“文件路径”) Directory Directory=FSDirectory.open(indexDir); IndexSearcher=newindexSearcher(目录,tr

我试图从lucene索引中搜索,但我想筛选此搜索。有两个字段“内容”和“类别”。假设我想搜索包含“运动”的文件,我还想计算a和b类别中的文件数量。我正试图通过以下代码实现这一点。但问题是,若有数以百万计的记录,那个么由于循环执行,它会变慢,请给我建议另一种实现该任务的方法

尝试{File indexDir=新文件(“文件路径”)

Directory Directory=FSDirectory.open(indexDir);
IndexSearcher=newindexSearcher(目录,true);
整数最大点击数=1000000;
QueryParser parser1=新的QueryParser(Version.LUCENE_36,“contents”,
新标准分析仪(LUCENE_36版);
Query qu=parser1.parse(“运动”);
TopDocs TopDocs=searcher.search(,最大点击次数);
ScoreDoc[]点击次数=topDocs.scoreDocs;
len=长度;
showMessageDialog(null,“找到时间”+len);
int-docId=0;
文件d;
字符串类别=”;
int ctr=0,ctr1=0;

对于(i=0;i您可以只查询您正在查找的每个类别,并获得
totalHits
。更好的做法是使用,而不是获得
TopDocs
实例:

Query query = parser1.parser("+sport +category:a")
TotalHitCountCollector collector = new TotalHitCountCollector();
search.search(query, collector); 
ctr = collector.getTotalHits();
query = parser1.parser("+sport +category:b")
collector = new TotalHitCountCollector();
search.search(query, collector); 
ctr1 = collector.getTotalHits();
Query query = parser1.parser("+sport +category:a")
TotalHitCountCollector collector = new TotalHitCountCollector();
search.search(query, collector); 
ctr = collector.getTotalHits();
query = parser1.parser("+sport +category:b")
collector = new TotalHitCountCollector();
search.search(query, collector); 
ctr1 = collector.getTotalHits();