2017-04-26 97 views
1

我有两个单词BANGALURU和BENGALURU。NEO4j密码查询匹配相同的单词

现在我要创建在Neo4j的节点,我必须创建只有一个节点,这意味着BANGALURU和BENGALURU应被视为一个创建只有一个节点

请告诉我,我怎么可以创建Neo4j的暗号查询为了这。

+0

你能更好地描述你的用例在更广泛的范围?这听起来像你需要通过单词快速查找节点。你在图中使用了哪些标签?在其他情况下,您需要支持与单个节点匹配的多个单词吗? – InverseFalcon

+0

我的问题是这样的。我需要在neo4j中创建节点,如下MERGE(l:Location {Type:'Place',name:'BANGALORE}}),这里查询是使用标签Location和BANGALORE属性创建的。现在我又有一个名为“BENGALORE”的属性名称。现在如果我正在尝试创建节点,它应该告诉我已经创建了节点BENGALORE,这意味着它应该将BANGALORE和BENGALORE视为相同。像孟买和孟买等...... –

回答

0

没有好方法让具有两个值的节点用于支持使用索引快速查找的相同属性。

我建议创建一个名称与其他节点具有ALIAS关系的位置节点。也许还可以添加一个:Alias标签到节点。例如:

(:Location:Alias{Type:'Place', name:'BENGALORE'})<-[:ALIAS]-(:Location{Type:'Place', name:'BANGALORE'}) 

您可以使用不带::Alias的Location节点作为任何其他连接的根节点。

但是,匹配会稍微复杂一些。查找查询可能类似于:

MATCH (a:Location)<-[:ALIAS*0..1]-(l:Location) 
WHERE a.name = {nameLookup} AND NOT l:Alias 

这两个别名与非别名节点工作,为0的关系模式的最低界限将匹配:位置节点本身(al会同一个节点)。