我正在使用OrientDB 2.2.30版,我想搜索所有与白色汽车有关的人。
在所有字符串属性上,两个顶点(人和实体)均设置为不区分大小写。
问题在于,“ white”一词用大写和小写写成,并且MATCH仅返回与我在查询中写的形式完全匹配的那些。
MATCH {class:Person, as:E0}.outE(){class:Drive, as:R0}.inV(){class:Car, as:E1 , where:( ( CarColor IN ['white'] ) ) } RETURN $paths
这将返回所有匹配路径,但是仅当单词“ white”被写为查询时:“ white”(即使此字段设置为case-,也不会检索WHIte或WHITE,不敏感)
有趣的是,如果我从'match'查询中获取颜色OUT的条件,并将其放置在'regular'的where子句中-则可以正常工作并检索所有大小写
SELECT *
FROM
( MATCH {class:Person, as:E0}.outE(){class:Drive, as:R0}.inV(){class:Car, as:E1 } RETURN $paths )
WHERE ( ( E1.CarColor IN ['white'] ) )
但是此解决方案会使匹配查询运行更长的时间... 因此,我需要另一种解决方案,以将“匹配”与不区分大小写的条件一起使用...
谢谢。
答案 0 :(得分:0)
最简单的方法是使用.toLowerCase()
例如。 CarColor.toLowerCase() IN ['white']