Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
模糊neo4j关系_Neo4j - Fatal编程技术网

模糊neo4j关系

模糊neo4j关系,neo4j,Neo4j,我想在neo4j中做一些我希望可以正常工作的事情:我想进行“模糊”路径匹配;根据查询的不同,链接有时会算作关系,有时则不算作关系 这里有一个例子:假设我有一个(p:Person)-[:HAS]->(n:Name)。搜索发现了一个人(比如,通过电话号码)。我想从这个人到其他名字相似的人,得到他们的电话号码。另外,我希望相似性可以调整,因此用户可能会要求匹配非常相似的名称,或者不太相似的名称 我可以得到第一个人的名字,然后用一些lucene模式对其他名字进行搜索——这很简单,但这意味着对名字值进行完

我想在neo4j中做一些我希望可以正常工作的事情:我想进行“模糊”路径匹配;根据查询的不同,链接有时会算作关系,有时则不算作关系

这里有一个例子:假设我有一个(p:Person)-[:HAS]->(n:Name)。搜索发现了一个人(比如,通过电话号码)。我想从这个人到其他名字相似的人,得到他们的电话号码。另外,我希望相似性可以调整,因此用户可能会要求匹配非常相似的名称,或者不太相似的名称

我可以得到第一个人的名字,然后用一些lucene模式对其他名字进行搜索——这很简单,但这意味着对名字值进行完整的lucene搜索,在我的用例中,这并不理想,因为我认为这可能有点慢(有很多名字——比如说十亿个,记住这只是一个例子)。我希望有更好的办法

我能想象的一种方法是在名字之间建立一种“相似性”关系。每当添加一个新的名称节点时,我们都会检查相似的名称并将它们链接起来(创建这些关系会很慢,但我们可以将其推到批处理过程中,如果需要几分钟的时间也可以)。我们只会链接非常相似的名称(因此链接的数量希望不会太多)。我想我们可以在此基础上创建一个查询,匹配大于我的阈值的相似性。大概是这样的:

MATCH   (p1:Person {phone:"555-234234"})-->(n1:Name)-[s:SIMILAR]->(n2:Name)-->(p2:Person)
WHERE   s.matchLevel >=2
RETURN  p2.phone;
这种方法比只进行lucene搜索更好还是更差?还有谁想做这样的事吗

此外,根据在的建议,我相信我最好拥有许多关系(相似的关系1,相似的关系2…),而不是在我的关系上使用“匹配级别”属性


顺便说一句,我知道有很多类似的问题(例如),但好吧,这个确切的问题不在stackoverflow上(我已经看过了)。

我想这不是你可以用Cypher做的事情(我总是很高兴被纠正)。但是,您可以为Neo4j构建一个非托管扩展,该扩展允许您使用Java进行自定义遍历,该遍历可以通过HTTP端点进行设置和返回:还请注意,在3.0中(目前处于beta/release候选版本中),您可以创建可通过Cypher访问的存储过程: