You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Neo4j Cypher查询排序时出现Double(NaN)类型转换错误求助

解决Cypher排序时NaN引发的类型错误问题

问题出在apoc.text.sorensenDiceSimilarity偶尔返回NaN值,而Cypher排序操作无法处理NaN类型,导致类型转换错误。你需要在计算出相似度后,先过滤掉NaN记录再执行排序。

以下是修正后的查询语句:

MATCH (news:News {newsId: "/infografik/jurnalist/turkiye-sma-hastaligi-icin-yeni-adimlar-atiyor-26685"})
WHERE news.cleanTitle IS NOT NULL

MATCH (otherNews:News {category: news.category})
WHERE news <> otherNews AND otherNews.cleanTitle IS NOT NULL

WITH otherNews,
     apoc.text.sorensenDiceSimilarity(news.cleanTitle, otherNews.cleanTitle) AS sorensen
// 过滤掉无效的NaN值,确保排序时都是有效数值
WHERE sorensen IS NOT NaN
ORDER BY sorensen DESC
LIMIT 10
RETURN otherNews.title, sorensen, otherNews.category;

关键说明:

  • 你之前尝试过滤Null或NaN未成功,大概率是过滤时机不对——必须在计算出sorensen值之后执行过滤,否则无法判断该值是否为NaN。
  • 若不想丢弃这些记录,也可以给NaN设置一个默认值(比如0),替换过滤相关的语句为:
    WITH otherNews,
         CASE WHEN apoc.text.sorensenDiceSimilarity(news.cleanTitle, otherNews.cleanTitle) IS NaN THEN 0 
              ELSE apoc.text.sorensenDiceSimilarity(news.cleanTitle, otherNews.cleanTitle) 
         END AS sorensen
    
    但这种方式会将无效相似度的记录排在末尾,需根据业务需求选择。

内容的提问来源于stack exchange,提问作者Alp Buğra Aker

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 17:55:06