密码查询在浏览器环境中返回结果,但是当在py2neo函数中使用相同的密码时,不会返回任何内容

时间:2018-12-25 12:19:50

标签: neo4j cypher py2neo graphaware

问题摘要

我尝试使用相同的csv文件在neo4j / py2neo中重新创建函数和图形,但在csv文件中没有唯一的ID。

但是,当我尝试调用在py2neo中编写的函数以返回推荐的关键字时,该函数将返回一个空列表。当我将py2neo放到浏览器中时,会使用相同的密码查询给我正确的建议。

//Jaccard Similarity keyword recommendation  

MATCH (search_query:Title)-[:HAS_KEYWORDS]->(k:Keyword)  
WITH {item:id(search_query), categories: collect(id(k))} as userData  
WITH collect(userData) as data  
CALL algo.similarity.jaccard(data, {topK: 1, similarityCutoff: 0.1, write:true})  
YIELD nodes, similarityPairs, write, writeRelationshipType, writeProperty, min, max, mean, stdDev, p25, p50, p75, p90, p95, p99, p999, p100  
RETURN nodes, similarityPairs, write, writeRelationshipType, writeProperty, min, max, mean, p95  

//Return similar keywords 

MATCH (p:Title)-[:SIMILAR]->(other),  
  (other)-[:HAS_KEYWORDS]->(keyword)    
WHERE not((p)-[:HAS_KEYWORDS]->(keyword)) and p.title contains "aaa"  
RETURN keyword AS keywords  

当我将密码代码输入浏览器时,我得到了预期的结果,但是我注意到当我输入搜索[:SIMILAR]的密码查询时弹出警告:

  

索引无法有效执行通配符查询

     

如果使用CONTAINS的语句的性能不符合您的期望,请查看备用索引提供者,请参阅有关索引配置的文档。 (索引是::Title(title)上的索引)

我的py2neo功能:

def jacc_kw_rec(search):  
    q_r = []  
    query2 = "MATCH (p:Title)-[:SIMILAR]->(other), (other)-[:HAS_KEYWORDS]->(keyword) WHERE not((p)-[:HAS_KEYWORDS]->(keyword)) and p.Title contains \"{}\"".format(search)+ " RETURN keyword AS keywords LIMIT 3"  

    result = graph.run(query2).data()

    for r in result:
        r_j = json.dumps(r)
        loaded_r = json.loads(r_j)
        kw_ex = loaded_r['keywords']['Keyword']
        q_r.append(kw_ex)
    return q_r

当我测试旧代码时,该函数将返回建议的关键字列表,例如['aaa','bbb','ccc']

更新:在旧代码上测试了我的功能之后,它仍然返回一个空列表。 graph.run(query2).data()为空。

我想知道:

  1. 为什么我的graph.run(query2).data在浏览器中有结果时什么也不返回。

非常感谢

埃里克

1 个答案:

答案 0 :(得分:0)

...最终由于Neo4j认为这是空的比赛而无法输入。

由于

kw_ex = loaded_r['keywords']['Keyword']

更改为:

kw_ex = loaded_r['keyword']['Keyword']

它又开始工作了。

我仍然不明白为什么光标实际上什么也没显示,但却发现了一些东西,但是遇到了无法解决的错误。