当前位置: 首页 > news >正文

php网站开发需要什么如何加入广告联盟赚钱

php网站开发需要什么,如何加入广告联盟赚钱,wordpress页面显示,素材网免费Neo4j 和 Python 初学者指南:如何使用可选关系匹配优化 Cypher 查询 查询需求分析目标查询结构 编写 Cypher 查询查询解析OPTIONAL MATCH 和 COALESCE 的作用 在 Python 中使用 Neo4j 驱动执行查询使用 neo4j 驱动的 Python 示例代码代码解析示例输出 总结 在使用 N…

Neo4j 和 Python 初学者指南:如何使用可选关系匹配优化 Cypher 查询

    • 查询需求分析
      • 目标查询结构
    • 编写 Cypher 查询
      • 查询解析
      • `OPTIONAL MATCH` 和 `COALESCE` 的作用
    • 在 Python 中使用 Neo4j 驱动执行查询
      • 使用 `neo4j` 驱动的 Python 示例代码
      • 代码解析
      • 示例输出
    • 总结

在使用 Neo4j 和 Cypher 查询语言时,我们经常会遇到一些复杂的查询需求,例如需要在匹配节点时考虑某些关系链中的部分节点是否存在。本文将通过一个实际的查询需求,向大家介绍如何使用 Cypher 中的 OPTIONAL MATCHCOALESCE 函数来处理这种情况,并使用 neo4j Python 驱动来执行查询。

查询需求分析

假设我们有一个图数据结构,包含以下三个节点类别:

  • 顧客:客户信息
  • 事例子分類:案例子分类
  • 事例分類:案例分类

目标是查询名称为 “ダミー会社” 的 顧客 节点,并返回与之关联的 事例子分類事例分類 节点。我们还需要确保即使 事例子分類 不存在,也能返回 顧客事例分類 的直接关系。

目标查询结构

理想的查询结果应包含以下两种情况:

  1. 完整的关系链:顧客 -> 事例子分類 -> 事例分類
  2. 简化的关系链:当 事例子分類 不存在时,返回 顧客 -> 事例分類

为实现这一需求,我们可以利用 OPTIONAL MATCH 处理可选节点,并通过 COALESCE 函数在结果中根据节点的存在情况选择优先显示的结果。

编写 Cypher 查询

经过分析,最终的 Cypher 查询代码如下:

MATCH (p:`顧客`)
WHERE p.name = 'ダミー会社'
OPTIONAL MATCH (p) <- [] - (n:`事例子分類`) <- [] - (m:`事例分類`)
WITH p, n, m
OPTIONAL MATCH (p) <- [] - (mAlt:`事例分類`)
WHERE n IS NULL
RETURN p, COALESCE(n, null) AS n, COALESCE(m, mAlt) AS m
LIMIT 1000

查询解析

  1. 主查询:使用 MATCH 匹配名称为 “ダミー会社” 的 顧客 节点 (p)

    MATCH (p:`顧客`)
    WHERE p.name = 'ダミー会社'
    
  2. 可选路径 1:顧客 -> 事例子分類 -> 事例分類

    OPTIONAL MATCH (p) <- [] - (n:`事例子分類`) <- [] - (m:`事例分類`)
    

    这里我们使用 OPTIONAL MATCH 来查找包含 事例子分類 节点的完整路径。如果该路径存在,则会填充 nm 的值,否则这两个变量为 null

  3. 保存中间查询结果

    WITH p, n, m
    

    使用 WITH 关键字保存当前的匹配结果,以便在后续的查询中继续使用 pnm

  4. 可选路径 2:直接匹配 顧客 -> 事例分類

    OPTIONAL MATCH (p) <- [] - (mAlt:`事例分類`)
    WHERE n IS NULL
    

    这一部分仅在第一条路径不存在时(即 n IS NULL)执行,再次尝试找到 顧客 节点和 事例分類 节点的直接关系,并将结果保存到 mAlt 中。

  5. 使用 COALESCE 函数返回结果

    RETURN p, COALESCE(n, null) AS n, COALESCE(m, mAlt) AS m
    

    在返回结果时,我们使用 COALESCE 函数选择优先返回非空值:

    • n 返回 事例子分類 节点(若不存在则返回 null)。
    • m 优先返回完整路径中的 事例分類 节点,如果不存在则使用直接匹配的 mAlt
  6. 限制返回数量

    LIMIT 1000
    

    使用 LIMIT 限制返回的结果数量,以防结果集过大。

OPTIONAL MATCHCOALESCE 的作用

  • OPTIONAL MATCH:允许在查询关系链中灵活处理可选节点,即便路径中有部分节点或关系缺失,查询依然能返回 null 作为占位。
  • COALESCE:在多个备选项中优先返回第一个非空值,是在结果中选择最优返回值的关键。

在 Python 中使用 Neo4j 驱动执行查询

我们可以使用 Python 的 neo4j 库来执行上述 Cypher 查询。假设 Neo4j 数据库已启动,且 Python 已安装 neo4j 驱动(可通过 pip install neo4j 安装),可以按以下步骤执行查询。

使用 neo4j 驱动的 Python 示例代码

以下代码展示了如何在 Python 中通过 neo4j 驱动执行查询,并返回结果。

from neo4j import GraphDatabase# 配置 Neo4j 数据库连接
uri = "bolt://localhost:7687"
username = "username"
password = "password"# 初始化驱动
driver = GraphDatabase.driver(uri, auth=(username, password))# 定义查询
query = """
MATCH (p:`顧客`)
WHERE p.name = 'ダミー会社'
OPTIONAL MATCH (p) <- [] - (n:`事例子分類`) <- [] - (m:`事例分類`)
WITH p, n, m
OPTIONAL MATCH (p) <- [] - (mAlt:`事例分類`)
WHERE n IS NULL
RETURN p, COALESCE(n, null) AS n, COALESCE(m, mAlt) AS m
LIMIT 1000
"""# 执行查询函数
def fetch_results(driver):with driver.session() as session:results = session.run(query)# 打印结果for record in results:print(record)# 调用函数
fetch_results(driver)# 关闭驱动
driver.close()

代码解析

  1. 数据库连接:使用 GraphDatabase.driver() 创建驱动对象,并提供数据库 URI 以及用户名和密码。
  2. 查询执行:定义 fetch_results 函数,在 with driver.session() as session 中创建一个会话,并使用 session.run(query) 来执行 Cypher 查询。
  3. 结果处理:循环遍历 results,并打印出每一条记录,展示匹配的 顧客事例子分類事例分類 节点。
  4. 关闭连接:用完数据库后,通过 driver.close() 关闭驱动以释放资源。

示例输出

假设数据库中有一个名称为 “ダミー会社” 的 顧客 节点,且该节点与一些 事例子分類事例分類 节点存在关联,那么运行代码后会输出类似的结果:

<Record p=<Node id=1 labels={'顧客'} properties={'name': 'ダミー会社'}> n=<Node id=2 labels={'事例子分類'} properties={'name': '分类A'}> m=<Node id=3 labels={'事例分類'} properties={'name': '分类总'}>>

如果没有 事例子分類,代码会返回 mAlt 中的直接匹配结果。

总结

通过灵活使用 Cypher 查询中的 OPTIONAL MATCHCOALESCE 函数,我们可以有效地处理复杂的查询需求,确保即使部分节点缺失,查询依然能够返回有效结果。希望本文的介绍能够帮助 Neo4j 和 Python 初学者更好地理解如何编写和优化 Cypher 查询,以及如何在 Python 中执行这些查询。

http://www.hkea.cn/news/825699/

相关文章:

  • 网站建设拾金手指下拉seo的实现方式
  • 北京宣传片湖南seo优化哪家好
  • 下载app 的网站 如何做黑帽seo排名技术
  • 个人是否做众筹网站哪里可以免费推广广告
  • 外贸网站该怎么做青岛百度推广优化怎么做的
  • 网站建设中 网页代码优化关键词排名公司
  • 网站标题优化怎么做泉州百度首页优化
  • 学习网站建设的是什么专业优化网站排名公司
  • 固定ip做网站西安网站建设推广
  • 做响应式网站好不好软文发布门户网站
  • 重庆做网站建设的公司哪家好最基本的网站设计
  • 长春网站制作wang网站营销软文
  • discuz 网站搬家市场营销的策划方案
  • 做婚礼网站的公司简介seo网站关键词优化软件
  • 哪些客户需要做网站推广平台排名前十名
  • 团购的网站扣佣金分录怎么做厦门百度竞价
  • 国家疫情最新政策麒麟seo外推软件
  • 河南第二波疫情最新消息淘宝关键词优化技巧教程
  • 优化好的网站做企业网站百度代理公司
  • 外贸b2c网站如何做推广百度电话人工服务
  • 百度怎样做网站并宣传网站2023上海又出现疫情了
  • wordpress后台登录慢阳山网站seo
  • 深圳网站建设企网络推广运营途径
  • 给自己女朋友做的网站yandex搜索引擎
  • 购物网站建设教程怎么在网上做广告宣传
  • 冠县做网站推广网站怎么制作
  • 开封 网站建设苹果被曝开发搜索引擎对标谷歌
  • 东莞虎门高铁站百度客户端电脑版下载
  • 建网站怎么挣钱的学seo推广
  • 自如网站做的好 服务哪个网站学seo是免费的