2014-03-25 34 views
0

我们计算一些文档的词频(tf-idf)。我们将这些术语表示为与某些文档(更多节点)相关的节点。Neo4j正在载入大数据:数据结构,Matrix vs Json

问题是,我必须填写我们的Neo4j数据库与条款和文件之间的加权关系,这是很多数据。

我们一直在使用HTTP REST服务,我的队友告诉我他会制作一个矩阵,我可以使用它来填充关系图,我认为这会是错误的,因为它会变成O (N^2)。

我认为最好使用json结构并通过HTTP发送,然后逐个插入关系。

哪个是处理这种数据结构的最好方法?

回答

2

请看看我们在Neo4j的最新里程碑Cypher的LOAD CSV子句中的一项新功能。

http://docs.neo4j.org/chunked/milestone/import-importing-data-from-a-single-csv-file.html

生成要分析包含每一个独特的字,它的频率文档的CSV文件。将该CSV文件推送到可从Neo4j数据库服务器通过HTTP GET访问的位置。

这暗号查询将是这样的:

USING PERIODIC COMMIT 
LOAD CSV WITH HEADERS FROM 
    "http://localhost:8888/csv/docid-ABCD-0000001.csv" 
AS csvLine 
MERGE (doc:Document { id: csvLine.document_id }) 
MERGE (word:Word { word: csvLine.word }) 
MERGE (doc)-[:HAS_WORD { weight: csvLine.word_frequency }]->(word) 

此查询获取或创建文档节点,文字节点,然后连接两个和资格文档中的每个词词频的关系。

CSV文件的标题是:DOCUMENT_ID,文字,word_frequency

注意:您必须下载的Neo4j(2.1.0-M01)的最新里程碑使用LOAD CSV作为我的时间张贴这个。建议不要在生产应用程序中使用里程碑。