模糊neo4j关系

时间:2016-04-04 09:00:15

标签: neo4j

我想在neo4j中做一些我希望能正常工作的东西:我想制作"模糊"路径匹配;链接有时会被视为一种关系,有时则不会,这取决于查询。

以下是一个例子:让我说我有一个(p:人) - [:HAS] - >(n:姓名)。搜索找到了一个人(例如,通过电话号码)。我想从这个人到其他名字相似的人,来获取他们的电话号码。此外,我希望相似性可以调整,因此用户可能会要求匹配非常相似的名称,或者名称不相似。

我可以获得第一个人的名字,然后使用一些lucene模式搜索其他名称 - 这很容易,但这意味着对Name值进行完全lucene搜索,这在我的使用中案例并不理想,因为我认为它可能有点慢(有很多名字 - 让我们说十亿,记住这只是一个例子)。我希望有更好的方法。

我能想象的一种方法是拥有相似性"名称之间的关系。每当添加一个新的Name节点时,我们都会检查相似的名称并将它们链接起来(创建这些关系会很慢,但我们可以将它推到批处理过程中,如果需要几分钟就可以了)。我们只链接相当相似的名称(所以链接的数量有望不会太大)。我想我们可以对此进行查询,匹配大于我的阈值的相似性。像这样:

MATCH   (p1:Person {phone:"555-234234"})-->(n1:Name)-[s:SIMILAR]->(n2:Name)-->(p2:Person)
WHERE   s.matchLevel >=2
RETURN  p2.phone;

这种方法比仅仅进行lucene搜索更好还是更差?有没有人想做这样的事情?

此外,根据http://graphaware.com/neo4j/2013/10/24/neo4j-qualifying-relationships.html的建议,我相信我最好不要有很多关系(SIMILAR_1,SIMILAR_2 ..),而不是使用"匹配等级"属于我的关系。

顺便说一句,我知道有很多类似的问题(例如。Neo4j 2 Cypher fuzzy search),但是这个完全问题并非在stackoverflow上(我看了)。

0 个答案:

没有答案
相关问题