当前位置: 首页 > 知识库问答 >
问题:

当数据集较大时,Jena文本查询性能显著降低

孙志
2023-03-14

我正在从一个2.37GB的RDF数据集进行查询,其中包含大约1700万个三元组,并且还维护了该数据集的lucence索引。我尝试了jena-text模块的文本查询,它是在存储的lucene索引的基础上进行搜索的。但是它的性能相当慢,对于一个非常慢的搜索查询需要4秒或更多的时间。

然而,当我使用luncene索引查看器'luke'。索引似乎没有问题,当我从索引中搜索特定的术语时,搜索它需要几毫秒的时间。

SELECT ?subj ?status ?version ?label 
WHERE {  
      ?subj rdf:type ts:Valueset;
            text:query 'cancer';
            ts:entityStatus ?status;
    OPTIONAL { ?subj ts:versionID ?version . } .
    OPTIONAL { ?subj rdfs:label ?label . } .
}
LIMIT <limit> 
OFFSET <offset>
store.getDataset().begin(ReadWrite.READ) ;
Query query = QueryFactory.create(queryStr);
QueryExecution qexec = QueryExecutionFactory.create(query , store.getDataset()) ;
ResultSet results = qexec.execSelect();
while(results.hasNext()){
     QuerySolution qs = results.next();

下面是创建索引数据集的代码。

Dataset baseDS = TDBFactory.createDataset(storePath.trim());
//define index mapping
EntityDefinition entityDef = new EntityDefinition("uri", "property", RDFS.label.asNode());
entityDef.set("property", TS.conceptCode.asNode());
entityDef.set("property", SKOS_XL.literalForm.asNode());
entityDef.set("property", SKOS.note.asNode());
entityDef.set("property", SKOS.definition.asNode());

//create in file lucene
File indexDir = new File(textIndexPath);
Directory luceneDir = null;
try {
luceneDir = FSDirectory.open(indexDir);
} catch (IOException e) {
e.printStackTrace();
}

// Join together into a dataset
Dataset indexedDS = TextDatasetFactory.createLucene(baseDS, luceneDir, entityDef) ;

请允许任何人识别代码和索引数据集的配置方式是否存在任何问题。谢谢

共有1个答案

江华容
2023-03-14

这似乎是一个已知的问题,我也有问题:(https://issues.apache.org/jira/browse/jena-999

 类似资料:
  • 我对BigQuery中的集群表(带有日期分区)有一个问题。我有一个由名为entity_id的列集群的表。问题是,我希望在进行由这些集群列过滤的查询时看到字节读取减少,但根据BigQuery Web UI,它无论如何都在进行全扫描。 例如:<br>从<code>project.usersDataset中选择*。users_cluster其中entity_id='405849241'限制为1000 返

  • 在我问我的问题之前,请注意实际数字不能代表性能。重要的是它们相对于彼此的价值,以及在运行之间得到一致的数字(当然是在一个小范围内)。 我使用对应用程序进行基准测试: 我每秒得到45K的请求。 现在,我再添加4个控制器,除了类名和请求路径之外,与上面的控制器相同: null 路由路径匹配器似乎在每个请求的所有可用路由路径中进行线性搜索。对于每个路由路径,如果它没有模式,它只进行字典查找,一切都很好。

  • 我正在使用一个嵌入式数据源(ApacheCommonsDBCP1.3),JDBC3DB2JCC,进行Spring批处理。用于BD2数据库和JDK1的jar。5.我知道DBCP2。x已经发布,但由于现有系统(JDK1.5),我现在无法升级。 数据库配置: 我注意到,如果将validationQuery属性与testOnBorrow、testOnReturn和testWhileIdle一起使用,则完成

  • 问题内容: 我有一个庞大的3D点数据集(约190万行)可供选择。我最常使用的语句类似于: 我有关于x,y和z以及otherParameter的索引。我也尝试将多部分索引添加到x,y,z,但这没有帮助。 关于如何使此查询更快的任何建议? 问题答案: 索引对于这种查询没有多大帮助。 您需要什么作为索引以及对其进行最小限度的平行六面体查询。 不幸的是,仅不支持对点的索引。但是,您可以在创建索引时,比方说

  • 所以整个问题是如何在给定的数据集中查询命名模型的组合。

  • 本文向大家介绍php、mysql查询当天,查询本周,查询本月的数据实例(字段是时间戳),包括了php、mysql查询当天,查询本周,查询本月的数据实例(字段是时间戳)的使用技巧和注意事项,需要的朋友参考一下 php、mysql查询当天,查询本周,查询本月的数据实例(字段是时间戳) php 获取今日、昨日、上周、本月的起始时间戳和结束时间 以上这篇php、mysql查询当天,查询本周,查询本月的数据