2013-07-30 1 views
0

큰 Apache Jena TDB를 가지고 있는데 Apache Jena 2.10.2를 사용하여 새로운 텍스트 검색 기능을 사용하여 Lucene 색인을 작성하려고합니다. 나는 문서를 따라하기가 어렵다.기존 Apache Jena TDB에서 Lucene 색인을 작성하여 텍스트 검색 구현하기

처음에는 코드에서 구성을 사용하려고했지만 종속성에 문제가있었습니다. lecene-core와 solr-solrj를 조합하면 특정 'classNotFound'오류가 발생하거나 'StandardAnalyzer가 최종 메서드 tokenStream을 재정의합니다.'오류가 발생합니다. 코드의 예 :

Dataset ds1 = DatasetFactory.createMem() ; 

EntityDefinition entDef = new EntityDefinition("uri", "text", RDFS.label) ; 

Directory dir = new RAMDirectory(); 

// Have also tried creating the index in a file 
File indexDir = new File("luceneIndexes"); 
Directory dir = FSDirectory.open(indexDir); 

// Fails on this line 
Dataset ds = TextDatasetFactory.createLucene(ds1, dir, entDef) ; 

나는 유일한 해결책은 텍스트 데이터 집합 어셈블러를 만들 수 있습니다 생각하지만, 사람이 코드에서이 문제를 만드는 방법에 대한 조언이 있다면 나는 그것을 그런 식으로 작업을 수행하는 것을 선호합니다.

+0

오류를보고,이 도움이 :

는에서 POM을 참조하십시오 "classNotFound"- 어떤 클래스? – AndyS

답변

1

예는 작동하는 Jena의 예제입니다.

병 버전이 혼동스러워 보입니다. 의존성을 해결하기 위해 maven을 사용해 보셨습니까? "mvn dependency : tree"는 어떤 버전이 사용되는지 보여줍니다.

jena-text는 Lucene 4.3.1 또는 Solr 4.3.1 용으로 제작되었습니다. 당신이 세부 사항, 예를 들어 주면 https://repository.apache.org/content/groups/snapshots/org/apache/jena/jena-text/1.0.0-SNAPSHOT/

+2

예 lucene 분석기 종속성을 놓치고있었습니다. 감사합니다. 그러나 나는 여전히 기존의 TDB에 대한 색인을 생성하는 더 큰 문제를 해결하는 방법을 확신하지 못하고있다. 문제는 EntityDefinition에 대한 이해가 부족할 수 있다고 생각합니다. entityField 및 primaryField의 출처를 설명해 주시겠습니까? 이러한 매개 변수가 TDB에만 해당해야합니까? 다른 기본 오류는 기본 모델이 내 모델과 일치하지 않는 데이터를로드하는 중에 발생할 수 있습니다. 'Model m = dataset.getDefaultModel(); RDFDataMgr.read (m, DBDirectory); '? 이견있는 사람? – bmoran

+0

안녕하세요 @bmoran 문제를 해결하셨습니까? TDB를 모델에로드하는 방법은 무엇입니까? –

+0

예,이 문제가 해결되었습니다. 이 문제는 TDB 기반의 Lucene Index (텍스트 검색 구현에 사용됨)를 만드는 방법에 대한 것이었고 종속성을 전환하여 해결되었습니다. 일부 Jena 의존성 버전은 호환되지 않습니다. 기존 모델에 TDB를로드하는 데 문제가있는 경우 Jena 설명서에 예제가 있다고 생각되지만 몇 달 후에 Jena를 사용하지 않았습니다. 나는 TDB를 기존 모델에로드하는 작업을 한 적이 없었습니다. – bmoran