2012-10-25 2 views
0

Grechin과 Neo4j를 사용하여 infochimps에서 ENRON dataset을 조작하고 있습니다. 이 데이터 세트에는 MessageEmail Addresss의 두 가지 유형의 꼭지점과 두 가지 유형의 가장자리 인 SENTRECEVIED_BY이 있습니다. 이 데이터 세트에서 type: 'Message'의 각 꼭지점에 대해 Lucene 문서를 만들고 문서의 추가 필드로 연결된 꼭지점 (예 : v.in(), v.out())의 정보를 통합하는 맞춤 색인을 만들고 싶습니다.Neo4j 그래프에 사용자 정의 Lucene 인덱스를 작성하는 방법은 무엇입니까?

내가

g = new Neo4jGraph('enron'); 

PerFieldAnalyzerWrapper analyzer = 
    new PerFieldAnalyzerWrapper(new StandardAnalyzer()); 
analyzer.addAnalyzer("sender", new KeywordAnalyzer()); 
analyzer.addAnalyzer("recipient", new KeywordAnalyzer()); 

IndexWriter idx = new IndexWriter (dir,analyzer,IndexWriter.MaxFieldLength.UNLIMITED); 

g.V.filter{it.type == 'Message'}.each { v -> 
    Document doc = new Document(); 
    doc.add(new Field("subject", v.subject)); 
    doc.add(new Field("body", v.body)); 
    doc.add(new Field("sender", v.in().address); 
    v.out().each { recipient -> 
     doc.add(new Field("recipient", recipient.address)); 
    } 
    idx.addDocument(doc); 
} 
idx.close(); 

내 질문

의 라인을 따라 코드를 생각하고는 다음과 같습니다

  1. 인덱싱 정점을 열거 할 수있는 더 나은 방법이 있나요?
  2. 자동 인덱싱을 사용할 수 있습니까? 그렇다면 인덱싱 할 대상을 지정하는 방법은 무엇입니까?
  3. Analyzer을 직접 지정할 수 있습니까? 아니면 기본값으로 고정되어 있습니까? 기본값은 무엇입니까?
  4. 내 색인을 만들어야하는 경우 gremlin을 사용해야합니까, 아니면 Java 프로그램을 사용하는 것이 좋을까요?
+0

해결할 수 있었습니까? 나는 똑같은 문제에 직면하고있다. (구체적으로, 나는 당신의 질문에서 총알 1과 2에 대해 우려하고있다.) – gipouf

답변

0

나는 Gremlin에서 잘 여행하지 않았기 때문에 여기서 직접적인 Neo4j 액세스에 대해 이야기 할 것입니다.

Lucene 색인을 그래프 외부에 작성하고 싶습니까? 그렇지 않으면 내장 된 graphDb.index(). forNodes ("myIndex", configForMyIndex)를 사용하여 neo4j와 연관된 Lucene 색인을 요청시 생성 할 수 있습니다. index.add (node, key, value)를 호출하여 각 문서에 여러 필드를 추가 할 수 있습니다. 각 노드는 Lucene 색인에서 하나의 문서로 나타납니다.

1) Gremiln에서 ... 나는

2) http://docs.neo4j.org/chunked/milestone/auto-indexing.html

3) http://docs.neo4j.org/chunked/milestone/indexing-create-advanced.html

4를 참조하십시오 모르는)는 완전히 DB의 외부를 작성해야합니까? 그렇다면 왜?

+0

그 예를 보았지만 분석기를 지정하지 못했습니다. 고급 색인 생성 (위의 두 번째 링크)에 대한 페이지 하단의 주석을 참조하십시오. –

0

자바 프로세스로 가져 오기를 끝냈습니다. 내 의견으로는 Gremlin을 통해 더 포괄적입니다.

어쨌든 프로세스가 실패한 경우 StandardAnalyzer의 새 개체를 만들 수 없습니다. 해당 클래스의 모든 생성자에는 매개 변수가 필요하므로 생성자에서 래퍼 클래스를 만들거나 paramater와 같은 올바른 버전의 Lucene으로 생성해야합니다.

오늘까지 Neo4J는 lucene 버전까지만 허용됩니다.

관련 문제