基于neo4j图数据库构建知识图谱的搜索引擎系统python附源码

在一个图中包含两种基本的数据类型:Nodes**(节点)** 和 Relationships**(关系)。Nodes** 和 Relationships 包含key/value形式的属性。Nodes通过Relationships所定义的关系相连起来,形成关系型网络结构。
性能
NebulaGraph:针对大型数据集设计,以实现快速查询执行。
Neo4j:提供良好的性能,尤其适用于较小的数据集。然而,在非常大型图的情况下,可能不如 NebulaGraph 高效。
查询语言
NebulaGraph::使用 nGQL 的查询语言,基于 openCypher。nGQL类似于 SQL,但专门设计用于图数据库。它提供了一组丰富的功能用于遍历和分析图形数据。
Neo4j:使用 Cypher 的查询语言,同样是一种专门用于图的语言。

class Neo4JSpiderPipeline:
    def __init__(self):
        # 连接neo4j
        self.gdb = GraphDatabase.driver(
            'bolt://localhost:7687', auth=('neo4j', '123456'))
        try:
            with self.gdb.session() as session:
                session.write_transaction(self.unique_url)
        except:
            pass

    def close(self):
        self.gdb.close()

    @staticmethod
    def unique_url(tx):
        tx.run("CREATE CONSTRAINT ON (page:Page)"
               "ASSERT page.url IS UNIQUE")

    def create(self, item):
        with self.gdb.session() as session:
            session.write_transaction(self._create, item)

    @staticmethod
    def _create(tx, item):
        tx.run("CREATE (page:Page) "
               "SET page.url=$url,"
               "page.title=$title,"
               "page.description=$description,"
               "page.keywords=$keywords,"
               "page.content=$content "
               "RETURN page.url, page.title", **item)
        if item['from']:
            tx.run("MATCH (srcPage:Page {url:$from_}), (newPage:Page {url:$url})"
                   "CREATE (srcPage)-[to:To]->(newPage)", from_=item['from'], url=item['url'])

    def process_item(self, item, spider):
        try:
            self.create(item)
        except Exception as e:
            spider.logger.error(e)
        else:
            spider.logger.info(item['title'])
        return

Neo4j是一个高性能的,NOSQL图形数据库,它将结构化数据存储在网络上而不是表中。它是一个嵌入式的、基于磁盘的、具备完全的事务特性的Java持久化引擎,但是它将结构化数据存储在网络(从数学角度叫做图)上而不是表中。Neo4j也可以被看作是一个高性能的图引擎,该引擎具有成熟数据库的所有特性。程序员工作在一个面向对象的、灵活的网络结构下而不是严格、静态的表中——但是他们可以享受到具备完全的事务特性、企业级的数据库的所有好处。
Neo4j因其嵌入式、高性能、轻量级等优势,越来越受到关注.

1. 安装Python3.7.3
 

2. pip换源

    windows:
    直接在user目录中创建一个pip目录,如:C:\Users\xx\pip,新建文件pip.ini,内容如下

    [global]
    index-url = 
3. 安装依赖包

    进入项目处,打开控制台,执行 
        pip install -r requirements.txt
    命令,等待下载安装完毕

4. 下载docker windows版

5. 在docker中执行以下命令,以启动neo4j容器:

    docker run -p7474:7474 -p7687:7687 -e NEO4J_AUTH=neo4j/123456 neo4j

6. 启动爬虫

    进入项目处,打开控制台,执行
        scrapy crawl hao123

7. 启动网页服务器

    进入项目处,打开控制台,执行
        python manage.py runserver
    然后浏览器打开链接即可
        http://127.0.0.1:8000/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值