【Neo4j学习】应用案例

(2)文献索引
先举个小例子,在学术界需要查一些论文,通常是用全文搜索,这样的搜索效率不高 。可以用Neo4j获取匹配度高的论文 。这里先举个小例子 。打开Neo4j,先手动插入数据 。
(论文1:论文图谱{论文名:"论文1"}),(论文2:论文图谱{论文名:"论文2"}),(论文3:论文图谱{论文名:"论文3"}),(论文4:论文图谱{论文名:"论文4"}),(论文5:论文图谱{论文名:"论文5"}),(论文6:论文图谱{论文名:"论文6"}),(论文7:论文图谱{论文名:"论文7"}),(论文1)-[:相似]->(论文2),(论文1)-[:相似]->(论文3),(论文2)-[:相似]->(论文4),(论文2)-[:相似]->(论文5),(论文3)-[:相似]->(论文5),(论文5)-[:相似]->(论文6),(论文7)-[:相似]->(论文2),(论文7)-[:相似]->(论文6)*
查找论文1到论文6之间相似的传递路径,这样就可以找出,论文的主要参考了那些论文 。
MATCH n=allshortestPaths((论文1:论文图谱{论文名:"论文1"})-[*..6]->(论文6:论文图谱{论文名:"论文6"})) RETURN n
接下来,我想通过一个完整的例子实现文献索引,从数据获取,导入,再到分析 。我将使用爬取1000本书的信息 。保存到csv,导入neo4j,再进一步分析 。
首先是使用爬取信息 。数据爬下来后,是这样 。
从左到右依次是书的upc编码,名字,类型,储存量,价格,评分,评分数目,简介目标网站是这个 。先使用 shell来操作一个爬虫,先简单进行爬取实验,把网页分析好 。
scrapy shell http://books.toscrape.com/catalogue/a-light-in-the-attic_1000/index.html
设计思路:
在里设置相关信息在处理特别的数据
代码我已经上传到git 。
通过csv文件,把数据导入Neo4j 。首先把book2.csv放到这个目录下:
/var/lib/neo4j/import
首先读取一下文件,看看是否能获取到:
LOAD CSV WITH HEADERS FROM "file:///books2.csv" AS line WITH line RETURN line
LOAD CSV WITH HEADERS FROM "file:///books2.csv" AS line CREATE (:Books { Id: line.upc, Name: line.name, Price: line.price,Rate:line.review_rating,content:line.jianjie,kinds:line.Kinds,stock:line.stock})
这样就把1000本书作为节点,存进去了 。输出:
Added 1000 ,1000 nodes, set 5998 ,after 228 ms.
查询25个看看情况:
并且可以查看到各种属性 。但是还没有关系 。在创建几个书类节点:
create (n:书类名{n.Name=”Sequential Art”})....
再建立关系:
MATCH (n:Books2),(m:书类名) where n.kinds = m.Name create(n)-[r:属于]->(m) RETURN n,r,m LIMIT 25
一个简单的书籍-门类图就建好了,现在我们可以通过书的评分,门类,价格进行索引 。从而完成一个简单的书目推荐系统 。在第五个案例我会合在一起做 。
(3)寻找垃圾邮箱源头
如果你不想在本地下载Neo4j,可以去可以登录微云数聚公司官网在线尝试一下Neo4j 。这里我们就基于这个平台,来做一个垃圾邮件的案例 。
在命令框输入:
MATCH m=(s:Person)-->(e:Email)-->(r:Person) WHERE e.title=~'.*普通发票.*' RETURN m LIMIT 15
这里只返回了15个节点 。如果我们要查到垃圾邮箱的源头,会怎么做?通常垃圾邮箱的标题或者内容会有关于促销,招聘等等字眼 。
这里我们就通过对所有邮件的标题遍历,查找关键字“发票” 。如果经常发这种邮件的人,邮件数量一定很多 。这里我们设置当有这种信件的数量超过105,就输出他 。
MATCH m=(s:)-->(e:Email)-->(r:) WHERE e.title=~'.发票.' WITH s,COUNT(e) AS num,(e) AS ,(r) ASWHERE num > 105s,,
得到图:

【Neo4j学习】应用案例