Neo4J Jaccard Сходство сталкивается с ClassCastException - PullRequest
0 голосов
/ 15 декабря 2018

Я пытался вычислить сходство между двумя статьями, но когда я попытался эмулировать пример кода кухни, показанный здесь: https://neo4j.com/docs/graph-algorithms/current/algorithms/similarity-jaccard/

Я столкнулся с исключением приведения класса.

Anпредставление моих данных выглядит следующим образом: представление моих CSV-файлов тестовых данных выглядит следующим образом: CSV используется для создания всех узлов титров:

title_id,title  
T1,Article Title 1  
T2,Article Title 2  

CSV, которые я хочу использовать для создания отношений:

title_id,keyword_id,keyword  
T1,K1,aaa  
T1,K2,bbb  
T1,K3,ccc  
T1,K4,ddd  
T2,K1,aaa  
T2,K5,eee  
T2,K6,fff  
T2,K4,ddd  

Я использовал следующий код:

MATCH (search_query:Title)
      -[:HAS_KEYWORDS]->(k_id:Keyword)
     <-[:HAS_KEYWORDS]-(return_query:Title)
      -[r2:HAS_KEYWORDS]->(rec_k:Keyword)
WITH {kw:id(search_query), categories: collect(k_id)} as userData
WITH collect(userData) as data
CALL algo.similarity.jaccard.stream(data, {similarityCutoff: 0.0})
YIELD item1, item2, count1, count2, intersection, similarity

RETURN algo.getNodeById(item1).name AS from, 
       algo.getNodeById(item2).name AS to,
       intersection, similarity
ORDER BY similarity DESC

Я получаю это сообщение об ошибке:

Neo.ClientError.Procedure.ProcedureCallFailed: Failed to invoke procedure
`algo.similarity.jaccard.stream`: Caused by: java.lang.ClassCastException:
org.neo4j.kernel.impl.core.NodeProxy cannot be cast to java.lang.Number

Я не совсем уверен, куда я пошелнеправильно, любой совет очень ценится.

1 Ответ

0 голосов
/ 16 декабря 2018

В параметрах процедуры необходимо использовать правильные имена параметров (item вместо kw) и правильные типы данных (id вместо node):

WITH {kw:id(search_query), categories: collect(k_id)} as userData

=>

WITH {items:id(search_query), categories: collect(id(k_id))} as userData
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...