我正在使用 Gremlin 和 Neo4j 来操作来自 infochimps 的ENRON 数据集。这个数据集有两种类型的顶点,Message
和Email Addresss
两种类型的边,SENT
和RECEVIED_BY
。我想在这个数据集上创建一个自定义索引,Lucene
为每个顶点创建一个文档,type: 'Message'
并将来自相关顶点(例如,)的信息合并v.in()
为文档v.out()
中的附加字段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();
我的问题是:
- 有没有更好的方法来枚举用于索引的顶点?
- 我可以为此使用自动索引吗?如果可以,我如何指定应该索引的内容?
- 我可以指定我自己的
Analyzer
,还是我坚持默认?什么是默认值? - 如果我必须创建自己的索引,我应该为此使用 gremlin,还是使用 Java 程序更好?