Ali*_*aza 6 lucene rdf sparql jena
我正在对 2.37 GB 的 RDF 数据集进行查询,其中包含大约 1700 万个三元组,并且还维护了数据集的 lucence 索引。我尝试了 jena-text 模块的文本查询,该模块基于存储的 lucene 索引进行搜索。但它的性能相当慢,搜索查询需要 4 秒或更多秒,非常慢。
但是,当我使用 luncene 索引查看器“luke”时。索引似乎没有问题,当我在索引中搜索特定术语时,需要几毫秒的时间来搜索它。
所以问题是我无法认识到为什么在“jena-texr”方面要花这么多时间。
以下是 sparql 查询:
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>
Run Code Online (Sandbox Code Playgroud)
这是耶拿代码:
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();
Run Code Online (Sandbox Code Playgroud)
这是创建索引数据集的代码。
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) ;
Run Code Online (Sandbox Code Playgroud)
请任何人都可以确定代码和索引数据集的配置方式是否存在任何问题。谢谢
| 归档时间: |
|
| 查看次数: |
760 次 |
| 最近记录: |