orientdb - 如何在不区分大小写的情况下在 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'] ) )
但是这个解决方案会导致匹配查询运行更长的时间......所以我需要另一个解决方案来使用“匹配”以及将应用为不区分大小写的条件......
谢谢。
解决方案
最简单的方法是使用.toLowerCase()
例如。CarColor.toLowerCase() IN ['white']
推荐阅读
- ssl - 将 SSL 添加到我的云前端分发时,我的 route 53 服务是否需要任何配置?
- javascript - 在上一个 GET 请求的对象可用后直接发送 GET 请求?
- java - “动态 Web 模块”方面究竟为 Eclipse 项目添加了什么
- google-drive-api - 从驱动器挂载的文件列表中打开 ipynb 文件
- python - 在 Metpy SkewT 上绘制风倒钩时出现 TypeError 的原因
- java - Java原子文件移动在断电时重复文件
- javascript - 如何修复“'BROWSER' 未被识别为内部或外部命令”?
- javascript - 使 PHP 生成的表响应的最佳方法是什么?
- javascript - 在Jquery中达到数值后如何重置递增变量
- c# - 在从 NetworkStream 读取之前,我的程序冻结