database - Neo4j - 如何在全文搜索中使用 createRelationshipIndex / createNodeIndex
问题描述
所以我知道 Neo4j 3.5 及更高版本通过 实现密码查询中的全文搜索createNodeIndex()
,例如:
CALL db.index.fulltext.createNodeIndex("myIndex", ["PersonNode"], ["name"])
wheremyIndex
是我用来存储索引的任意变量,PersonNode
是我的节点标签的名称,并且是我希望执行全文搜索name
的属性之一。PersonNode
要实际执行搜索name
,我可以执行以下操作:
CALL db.index.fulltext.queryNodes("myIndex", "Charlie")
但现在假设PersonNode
有一个 type 的关系PURCHASED_ITEM
,它连接到另一个节点标签ProductNode
如下:
PersonNode-[:PURCHASED_ITEM]->ProductNode
并进一步假设有一个名为指示每个产品的显示标题名称ProductNode
的属性。productTitle
我的问题是,我想为这种关系建立一个索引(大概使用createRelationshipIndex()
),并执行全文搜索productTitle
并返回所有PersonNode
购买给定产品的列表。我怎样才能做到这一点?
附录:我知道可以通过首先获取ProductNode
与给定标题匹配的所有实例的列表,然后执行正常的密码查询以提取所有相关PersonNode
实例来完成上述操作。我也明白,对于上面的例子,我只需要一个普通的密码查询。但我问这个问题的原因是我最终需要实现一个搜索栏,允许用户输入任何文本,包括可能的拼写错误和所有,并让它通过多个属性和/或关系执行搜索PersonNode
,并且结果需要按某种相关性分数进行排序。为了做到这一点,我觉得我需要首先准确地掌握关系查询在 neo4j 中是如何工作的。
解决方案
productTitle
下面是一个如何为关系属性创建全文索引的示例PURCHASED_ITEM
:
CALL db.index.fulltext.createRelationshipIndex("myRelIndex", ["PURCHASED_ITEM"], ["productTitle"])
这是一个显示该索引使用的片段:
CALL db.index.fulltext.queryRelationships("myRelIndex", "Hula Hoop") YIELD relationship, score
...
推荐阅读
- python - Python ValueError:具有多个元素的数组的真值不明确。似乎没有答案适用于我的错误
- javascript - AddEventListener 多次影响性能
- python - 是否可以在 django 模板内的主 for 循环内创建一个 for 循环?
- homebrew - 如何修复无法更新或升级 Homebrew
- python - 试图在 pygame 中旋转图像以进行移动
- python - seaborn.jointplot() 中的参数
- python - 从元组列表中过滤掉整数
- javascript - JavaScript display 属性只影响前 3 个元素
- c++ - No compile_commands.json file using cmake with vs code on windows
- python - 无法在此处确定问题