Database Neo4j-如何在全文搜索中使用createRelationshipIndex/createNodeIndex
因此,我了解到Neo4j 3.5及以上版本通过Database Neo4j-如何在全文搜索中使用createRelationshipIndex/createNodeIndex,database,neo4j,cypher,Database,Neo4j,Cypher,因此,我了解到Neo4j 3.5及以上版本通过createNodeIndex()在cypher查询中实现全文搜索,例如: CALL db.index.fulltext.createNodeIndex("myIndex", ["PersonNode"], ["name"]) 其中,myIndex是我用来存储索引的任意变量,PersonNode是我节点标签的名称,name是我希望在其中执行全文搜索的PersonNode的属性之一 要通过name实际执行搜索,我可以执行以下操作: CALL db.i
createNodeIndex()
在cypher查询中实现全文搜索,例如:
CALL db.index.fulltext.createNodeIndex("myIndex", ["PersonNode"], ["name"])
其中,myIndex
是我用来存储索引的任意变量,PersonNode
是我节点标签的名称,name
是我希望在其中执行全文搜索的PersonNode
的属性之一
要通过name
实际执行搜索,我可以执行以下操作:
CALL db.index.fulltext.queryNodes("myIndex", "Charlie")
但是现在假设PersonNode
具有类型为PURCHASED\u ITEM
的关系,该关系连接到另一个节点标签ProductNode
,如下所示:
PersonNode-[:PURCHASED_ITEM]->ProductNode
并进一步假设ProductNode
具有一个名为productTitle
的属性,该属性指示每个产品的显示标题名称
我的问题是,我想为这种关系建立一个索引(大概使用createRelationshipIndex()
),并通过productTitle
执行全文搜索,并返回购买给定产品的所有PersonNode
的列表。我该怎么做
附录:我理解,可以通过首先获取与给定标题匹配的所有
ProductNode
实例的列表,然后执行普通的密码查询来提取所有相关的PersonNode
实例来完成上述操作。我还了解,对于上面的示例,我只需要一个普通的密码查询。但我问这个问题的原因是,我最终需要实现一个搜索栏,允许用户输入任何文本,包括可能的拼写错误和所有内容,并让它通过多个属性和/或PersonNode的关系执行搜索,结果需要按照某种相关性评分进行排序。为了做到这一点,我觉得我需要首先准确掌握neo4j中的关系查询是如何工作的。下面是一个示例,说明如何为PURCHASED\u ITEM
关系的productTitle
属性创建全文索引:
CALL db.index.fulltext.createRelationshipIndex("myRelIndex", ["PURCHASED_ITEM"], ["productTitle"])
下面是一个显示该索引使用情况的片段:
CALL db.index.fulltext.queryRelationships("myRelIndex", "Hula Hoop") YIELD relationship, score
...