首页 > 解决方案 > 如何在不区分大小写的情况下在 OrientDB 上使用“匹配”进行搜索?

问题描述

我正在使用 OrientDB 版本 2.2.30,我想搜索所有与白色汽车相关的人。

两个顶点(个人和实体)在所有字符串属性上都设置为不区分大小写。

问题是“白色”这个词是用大写和小写写的,而 MATCH 只返回那些与我在查询中写的确切形式匹配的那些。

MATCH {class:Person, as:E0}.outE(){class:Drive, as:R0}.inV(){class:Car, as:E1 , where:( (   CarColor IN ['white']   ) ) } RETURN $paths

这将返回所有匹配路径,但仅当将单词“white”写为查询时:'white'(即使此字段设置为不区分大小写,也不会检索 WHIte 或 WHITE)

有趣的是,如果我从“匹配”查询中取出颜色的条件并将其放在“常规” 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']   ) )

但是这个解决方案会导致匹配查询运行更长的时间......所以我需要另一个解决方案来使用“匹配”以及将应用为不区分大小写的条件......

谢谢。

标签: orientdborientdb2.2

解决方案


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


推荐阅读