Neo4j 自动索引、旧索引和标签模式:相对于节点全文搜索的差异

2023-12-08

这个问题的部分答案neo4j-旧版索引和自动索引与新标签基础架构索引 and 传统索引自动索引方法与新索引方法之间的区别

我还不能对它们发表评论并在这里写一个新线程。 在我的数据库中,我有一个遗留索引“主题”和标签“主题”。

我知道:

  • A。模式 MATCH(和:标签)将扫描节点;
  • b.模式 START (n:Index) 将在旧索引上搜索
  • C。自动索引是一种遗留索引,应该给出与(b)相同的结果,但在我的情况下却没有
  • d.对于“良好实践”,START 子句应替换为 MATCH。

我在 a 之间得到了不一致的结果。和b。 (见下文),无法弄清楚如何使用 MATCH 的正确语法来搜索标签的索引。

这里有一些例子:

1#

start n=node:topic('name:(keyword1 AND keyword2)') return n

6行,3ms

start n=node:node_auto_index('name:(keyword1 AND keyword2)') return n;

0 rows

MATCH (n:Topic) where n.name =~ '(?i).*keyword1*.AND.*keyword2*.' return n;

0 行,10K 毫秒

2#

start n=node:topic('name:(keyword1)') return n

212 行,122 毫秒 [所有包含子字符串keyword1 的连贯结果]

start n=node:node_auto_index('name:(keyword1)') return n

0 rows

MATCH (n:Topic) where n.name =~ '(?i).*keyword1*.'return n

835 行,8K ms [结果也不一致,包含子字符串eyword]

MATCH (n:Topic) where n.name =~ 'keyword1' return n;

1 行,>6K 毫秒 [完全匹配]

MATCH (n:topic) where n.name =~ 'keyword1' return n;

没有结果(这里我使用索引“主题”而不是标签“主题”!)

MATCH (node:topic) where node.name =~ 'keyword1' return node;

无结果(尝试直接使用节点“对象”,如自动索引语法中所示)

你能帮忙解释一下吗:

  • 遗留索引和自动索引之间有什么区别?为什么两者之间的结果不一致?

  • 如何将 MATCH 子句与索引而不是标签一起使用? 我想重现全文搜索的结果。

  • 哪种语法进行全文搜索仅适用于节点的邻居,而不适用于完整数据库?匹配 ? START 子句?遗留索引?标签?我很困惑。


自动索引(只有一个)是一种手动(也称为遗留)索引,其名称为node_auto_index。这个特殊索引通过挂钩事务处理来跟踪图的更改。所以如果你声明name作为配置中节点自动索引的一部分,对具有 name 属性的节点的任何更改都会反映到该索引。

请注意,当您添加例如数据集时,自动索引不会自动填充到现有数据集上。自动索引的新属性。

进一步注意,手动或自动索引完全独立于标签。

查询手动或自动索引的唯一方法是使用 START 子句:

START n=node:<indexName>(<lucene query expression>) // index query
START n=node:<indexName>(key='<value>') // exact index lookup

模式索引完全不同,用于MATCH在适当的时候。

A 我的博客文章涵盖了neo4j的所有索引功能。

通常,您使用图形数据库中的索引来标识遍历的起点。一旦您在图表中获得了引用,您只需遵循关系即可,不再进行索引查找。

有关全文索引,请参阅另一篇博文.

根据下面的评论进行更新

In fact MATCH (p:Topic {name: 'DNA'}) RETURN p and MATCH (n:Topic) where n.name = 'DNA' return n两者是等价的。两者都会产生相同的查询计划。如果标签上有模式索引Topic和财产name (by CREATE INDEX ON :Topic(name)) Cypher 将隐式使用模式索引来查找指定的节点。

目前您无法使用基于架构索引的全文搜索。全文仅适用于手动/自动索引。

您提供的所有示例START n=node:topic(...)依赖手动索引。您有责任使它们与您的图表内容保持同步,因此我认为差异是由于图表中的修改不一致造成的,并且没有反映对手动索引的更改。

无论如何,如果您使用START n=node:topic(....)永远不会使用模式索引。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Neo4j 自动索引、旧索引和标签模式:相对于节点全文搜索的差异 的相关文章

  • SpatialQuery 使用 Lucene 进行基于位置的搜索

    我的 lucene 索引已索引纬度和经度字段 如下所示 doc Add new Field latitude latitude ToString Field Store YES Field Index UN TOKENIZED doc Ad
  • 在已标记的输入元素上使用“aria-labelledby”的目的是什么?

    许多 ARIA 演示网站使用以下代码
  • 无法将 neo4j shell 连接到本地服务器

    我已经通过自制程序安装了 neo4j 2 0 0 并启动了服务器 我可以通过端口 7474 访问 webadmin 控制台 但是当我运行时neo4j shell host localhost port 7474 I get non JRMP
  • 为 Apache Spark 示例运行 Cypher (CAPS)

    我知道这是一个广泛的问题 但这会对neo4j不属于某个领域的用户scala编程 我需要使用Apache Spark 项目的 Cypher https github com opencypher cypher for apache spark
  • Neo4J 2.1.3 唯一性约束被违反,这是一个错误吗?

    我们有一个 Neo4J 2 1 3 数据库 并且有一个创建的唯一性约束 如下所示 在 段 SEGMENT 断言上创建约束 segmentId 是唯一的 当我们从浏览器测试这一点时 它可以很好地检测违规行为 例如 CREATE n SEGME
  • SQL Server 全文的自定义断字器

    有谁知道如何为 SQL Server 2005 创建自定义分词系统 我更喜欢用 C 编写它 我需要能够搜索 c f 等术语 但 字符是英语 英国 分词器组件中的分词器 不能以任何其他方式更改 我发现以下文章提供了不完整的示例 缺少 IWor
  • 在json文件中导出neo4j数据库

    我想以 JSON 文件导出 Neo4j 图形数据库 This is a Export JSON button in Neo4j web UI version as shown in attached image below 但是 Neo4j
  • Neo4j 服务器无法使用非托管扩展启动

    我正在尝试在 neo4j 服务器 版本 CE 2 3 2 上使用非托管扩展 所以我正在尝试一个简单的你好世界的例子 http neo4j com docs stable server unmanaged extensions htmlNeo
  • 如何使用 cypher 2.0 不区分大小写进行搜索?

    如何使用 cypher 2 0 Neo4j 2 1 7 在索引字段上不区分大小写进行搜索 正则表达式不使用索引WHERE a X i b Y 使用 lower 不使用索引WHERE lower a X lower b Y 添加具有小写属性值
  • QT:删除QGridLayout中QLabel之间的空格

    我将一些具有不同颜色的 QLabels 添加到 QGridLayout 作为 QWidget 的布局 现在我在每个 Qlabel 与下一个 Qlabel 之间有一个间距 我想将其删除 我尝试将标签的边距设置为 0 将 GridLayout
  • 如何决定使用哪种NoSQL技术? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 MongoDB 基于文档 HBase 基于列 和 Neo4j 对象图 的优缺点是什么 我特别有兴趣了解
  • GetLastWriteTime 返回 12/31/1600 7:00:00 PM

    我使用以下代码将目录的修改日期时间写入标签 string selectedPath comboBox1 SelectedItem ToString DateTime lastdate Directory GetLastWriteTime s
  • 在 VS Code 文件搜索中,我可以展开(或折叠)所有结果吗?

    在程序的 搜索 窗格中 按 Enter 键后 会列出所有文件 其中一些文件会展开以显示文件中的结果 而其他文件则会折叠 我首先想知道是什么决定了任何给定文件的扩展 其次我想知道如何一次性扩展所有文件 这个问题似乎最接近我的问题 但它是关于不
  • 如何仅匹配两个节点之间的一种关系

    我正在使用 neo4j 图形数据库 它在 Ruby on Rails 中使用 例如 我汤姆和杰瑞之间有3个关系 他们合作盖了3栋房子 现在我只想匹配3个中的1个 如何编写查询代码 我已经尝试过 这是我的代码 Neo4j Session qu
  • 测量文档集之间的相似性

    出于说明目的 我们假设这是一个论坛服务 我需要计算每个用户帖子之间的 相似度 结果如下 among posts by user A similarity 60 among posts by user B similarity 20 我正在处
  • Lucene 搜索错误堆栈

    我在尝试使用 Lucene 进行搜索时看到以下错误 版本1 4 3 关于为什么我会看到这个以及如何解决它有什么想法吗 Caused by java io IOException read past EOF at org apache luc
  • Neo4j Desktop DB 无法启动,状态为“KILLED”

    运行 Neo4j Desktop 版本 1 0 15 尝试启动DB导致启动失败 数据库启动失败 DB database f8950fdd 6b5f 4fea 8c9f e8457ee1da9a v3 3 1 退出 状态为 已杀 检查日志 主
  • 单词之间没有空格的语言(例如亚洲语言)中的断词?

    我想让 MySQL 全文搜索适用于日语和中文文本以及任何其他语言 问题在于这些语言以及可能其他语言通常在单词之间没有空格 当您必须键入与文本中相同的句子时 搜索没有用 我不能只在每个字符之间添加空格 因为英语也必须有效 我想用 PHP 或
  • Spring Neo4j不保存数据

    我创建了新的应用程序 它应该通过存储库将 Person 对象保存到 neo4j 中 但是当我使用 findAll 方法时 我没有任何项目 我正在使用 Spring Boot 这是我的配置 package com example import
  • 转义 to_tsquery 中的特殊字符

    如何转义传递给的字符串中的特殊字符to tsquery 例如 这种查询 select to tsquery AT T 生产 NOTICE text search query contains only stop words or doesn

随机推荐

  • 使用flock和lockfile在bash中锁定文件

    我花了一天的大部分时间寻找这个问题的解决方案 我想我已经接近边缘了 我需要在 bash 中做的是 编写 1 个脚本 该脚本将定期读取您的输入并将它们写入文件中第二个脚本将定期打印出完整的文件 但仅当写入新内容时 这意味着它永远不会一个接一个
  • Android RadioGroup 检查多个 RadioButton?

    我在用RadioGroup added RadioButton rdbut to RadioGroup rdgrp like rdgrp addView rdbut for int j 0 j lt 3 j RadioGroup rdgrp
  • 使用关联标签/单元提取数据

    我一直在尝试分离出隐藏在文本句子中的关键数据 例如 我已经使用以下代码取得了一些进展 但它也提取了不需要的值 let Source Excel CurrentWorkbook Name Table3 Content Changed Type
  • 写行方法

    我有一个日志文件 txt 其中包含以下信息 Filename1 A3332NCDER Filename2 B3332NCDER Filename3 B1222NCDERE Filename4 C1222NCDER Filename4 C12
  • 在 pip jnius 安装中找不到 JRE_HOME

    正在尝试安装jnius来自 pip 这是一个要求pip install sikuli 这是我尝试安装时遇到的错误 变量定义是否正确 有谁明白为什么它一直说找不到JRE HOME Edit 我的路径变量是 setup py 包含 jdk ho
  • 这个 PHP 随机数库如何工作?

    From http fullthrottledevelopment com php nonce library download 有一个PHP nonce库 但是有一些东西我不知道理解 第一个是它提醒我们为FT NONCE UNIQUE K
  • 如何终止与 grep 匹配时间超过 30 分钟的进程?

    我有一组并行运行的进程 有时 有些内容的停留时间会超过脚本允许的时间 time start microtime true max run time 30 60 30 minutes measured in seconds while mic
  • 如何使用 Exchange Web 服务托管 API 设置联系人头衔

    我正在尝试使用 EWS API 创建新联系人 我可以设置除联系人标题属性之外的所有所需值 我尝试了代码 oContact new Contact oService oContact GivenName John oContact Surna
  • 使用 NLB 和 IAM 身份验证公开 AWS MSK - 主机名验证失败

    我们正在努力让 Amazon MSK Kafka 与 IAM 身份验证配合使用 然后使用 aws kafka 广告侦听器中的更改通过 DNS 公开访问它 为了实现这一点 我们遵循如下相同的基础设施计划 但我们不使用接口端点 而是使用网络负载
  • 如何以编程方式创建和管理 macOS Safari 书签?

    我正在制作一个脚本 它会更新我的 macOS Safari 上的书签 以便始终将我订阅的所有 Reddit 子版块作为特定文件夹中的单独书签 我已经将所有 subreddits 作为 Python 中元组的排序列表 将所需的书签名称作为第一
  • SML 中绑定的价值?

    有人可以解释一下为什么评估后 and 的值一定是 16 这是正确的答案吗 我认为答案 3 是因为我们调用函数 f 并将值 1 和 2 作为函数 f 发送 但看不到值 5 和 10 但我想我错了 val x 1 val y 2 val f f
  • 在 SwiftUI 中将 NavigationButton 与服务器请求结合使用

    我怎样才能做一个NavigationButton在进入下一个视图之前等待服务器响应 我尝试过这样的事情 NavigationButton destination LogonView onTrigger gt Bool in return s
  • 如何从远程服务器加载图像到iPhone中的UIImageView上?

    我正在尝试从应用程序中的 UIImageView 上的远程服务器加载图像 是否可以从远程服务器加载图像 我正在使用以下代码 id path http upload wikimedia org wikipedia commons c c7 S
  • 在 Swift 中,无主引用与弱引用[重复]

    这个问题在这里已经有答案了 如果你有一个Dog弱引用Bone 这意味着在这种情况下 Dog 是引用的 所有者 并且它使用骨骼 但是骨骼可以不存在 而 Dog 仍然可以运行 因为对骨骼的引用是可选的 然而 对于 无主 关键字 无主 似乎不是在
  • 从 php 循环绘制多个图表(Chart.js)以读取多个文件

    我一直在尝试使用 Chart js 从 php 循环绘制多个图表 事实证明 Chart js 只会将数据聚集在一个画布 第一个画布 中 其他画布最终会变成空白 我觉得我已经很接近了 但还没有完全实现 有人可以帮助我吗 提前致谢 这是我的代码
  • 创建 PHP PDO 数据库类,OOP 遇到麻烦

    这是我当前的数据库类 class Database private db function Connect db host localhost db name database1 db user root db pass root try
  • 将书面数字转换为R中的数字

    有谁知道将数字的文本表示形式转换为实际数字的函数 例如将 20305 转换为 20305 我已在数据帧行中写入数字 并希望将它们转换为数字 在 qdap 包中 您可以用单词替换数字表示的数字 例如 1001 变为一千一 但反之则不然 lib
  • 如何在鼠标悬停在任何单元格上时突出显示 datagridview 的行和/或列标签(在 C# 中)?

    使用 Windows 窗体上的 DataGridView 控件 当您将鼠标移到行标签 或列标签 上时 它 标签单元格 背景将更改为蓝色阴影 或其他颜色 这无疑取决于您的 Windows 配色方案 我希望在将鼠标移动到网格中的任何单元格上时产
  • 使用输入字符串作为变量名

    例如 如果输入是 香蕉 我想打印香蕉的千卡 我尝试过这样的事情 但失败了 string input cin gt gt input cout lt lt input Kcal lt lt endl 我知道我可以使用 if 语句来做到这一点
  • Neo4j 自动索引、旧索引和标签模式:相对于节点全文搜索的差异

    这个问题的部分答案neo4j 旧版索引和自动索引与新标签基础架构索引 and 传统索引自动索引方法与新索引方法之间的区别 我还不能对它们发表评论并在这里写一个新线程 在我的数据库中 我有一个遗留索引 主题 和标签 主题 我知道 A 模式 M