如何在不区分大小写的情况下在OrientDB上使用“ MATCH”进行搜索?

时间:2018-07-09 08:03:24

标签: orientdb orientdb2.2

我正在使用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']   ) )

但是此解决方案会使匹配查询运行更长的时间... 因此,我需要另一种解决方案,以将“匹配”与不区分大小写的条件一起使用...

谢谢。

1 个答案:

答案 0 :(得分:0)

最简单的方法是使用.toLowerCase()例如。 CarColor.toLowerCase() IN ['white']