Lucene 使用大型数据集时,Jena文本查询性能会显著降低

Lucene 使用大型数据集时,Jena文本查询性能会显著降低,lucene,rdf,sparql,jena,Lucene,Rdf,Sparql,Jena,我正在从一个2.37GB的RDF数据集进行查询,其中包含大约1700万个三元组,数据集的lucence索引也得到了维护。我尝试了jena文本模块的文本查询,该模块基于存储的lucene索引进行搜索。但是它的性能非常慢,搜索查询需要4秒或更长的时间,这非常慢 但是,当我使用luncene索引查看器“luke”时。索引似乎没有问题,当我从索引中搜索某个特定术语时,搜索它需要几毫秒的时间 所以问题是,我无法认识到,为什么在谈到“jena texr”时要花这么多时间 以下是sparql查询: SELEC

我正在从一个2.37GB的RDF数据集进行查询,其中包含大约1700万个三元组,数据集的lucence索引也得到了维护。我尝试了jena文本模块的文本查询,该模块基于存储的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>
下面是创建索引数据集的代码

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) ;

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

这似乎是一个已知的问题,我也有问题:(

在answers.semanticweb.com上复制:
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) ;