【问题标题】:Case of certain special characters in Neo4j case insensitive regex searches don't seem to be matchingNeo4j 不区分大小写的正则表达式搜索中某些特殊字符的大小写似乎不匹配
【发布时间】:2015-03-05 03:05:54
【问题描述】:

对于不区分大小写的正则表达式搜索,似乎 ü 和 Ü 或 ł 和 Ł 等字符在 Neo4j 中被视为完全独立的字符。

以下 Cypher 应该返回一个节点,但它没有:

CREATE (t:Thing { name: "Łomza Überbrew" })
MATCH (t:Thing) WHERE t.name=~'(?i)łomza überbrew' RETURN t

这对于 Neo4j 来说是预期的吗?使用 Neo4j Enterprise-2.1.2

谢谢

【问题讨论】:

  • 哎呀。我没有适合您的解决方案,但这似乎可能涉及 unicode 魔术。一个相关的问题可能是您的常量字符串的 unicode 风格/编码是什么,neo4j 如何解释它,以及您对数据库中的字符串使用什么字符编码。 “大写”和“小写”的概念在 unicode 中会变得很奇怪。 fileformat.info/info/unicode/category/Lu/list.htm

标签: neo4j


【解决方案1】:

您需要使用不区分大小写的 unicode 正则表达式,而不是仅适用于 ascii 字符的不区分大小写。而不是(?i) 使用(?ui)

CREATE (t:Thing { name: "Łomza Überbrew" })
MATCH (t:Thing) WHERE t.name=~'(?ui)łomza überbrew' RETURN t

【讨论】:

  • 我在找这个。谢谢。
猜你喜欢
  • 2014-10-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-29
  • 1970-01-01
相关资源
最近更新 更多