Sql OrientDB:使用gremlin进行文本搜索
我正在使用OrientDB和随附的gremlin控制台 我正在尝试在文本属性中搜索模式。我有具有ebodyText属性的电子邮件顶点。问题是,使用类似SQL的命令和Gremlin语言进行查询的结果大不相同 如果我使用类似SQL的查询,例如:Sql OrientDB:使用gremlin进行文本搜索,sql,orientdb,graph-databases,gremlin,pyorient,Sql,Orientdb,Graph Databases,Gremlin,Pyorient,我正在使用OrientDB和随附的gremlin控制台 我正在尝试在文本属性中搜索模式。我有具有ebodyText属性的电子邮件顶点。问题是,使用类似SQL的命令和Gremlin语言进行查询的结果大不相同 如果我使用类似SQL的查询,例如: 从电子邮件中选择count(*),其中包含“%Syria%”等文本。 它返回24 但如果我在gremlin控制台中查询,例如: g.V.has('eBodyText').filter{it.eBodyText.matches('.*Syria.*')}.co
从电子邮件中选择count(*),其中包含“%Syria%”等文本。
它返回24
但如果我在gremlin控制台中查询,例如:
g.V.has('eBodyText').filter{it.eBodyText.matches('.*Syria.*')}.count()
它不返回任何值
使用不同关键字“memo”的相同查询通过SQL返回161,但通过gremlin返回20
为什么会这样?gremlin命令的语法有问题吗?有没有更好的方法在gremlin中搜索文本
我猜在使用python驱动程序“pyorient”的上传脚本中可能存在设置属性的问题。
谢谢你的帮助
我尝试了2.1.15,没有问题 这些是记录 已编辑 我在数据库中添加了一些顶点,现在
count()
是11
查询:
g.V.has('eBodyText').filter{it.eBodyText.contains('Syria')}.count()
==>11
输出:
g.V.has('eBodyText').filter{it.eBodyText.contains('Syria')}.count()
==>11
希望有帮助。这很有趣。我的版本是2.1.13,但我认为这不是问题所在。这应该是一个文本编码问题吗?或者可能是长度?我刚刚重新安装了它,2.1.15也有同样的问题。如果您需要更多信息,请告诉我,谢谢~@NeoJi您可以共享以下查询的所有结果吗?从电子邮件中选择像“%Syria%”和g.V.has('eBodyText')这样的eBodyText。过滤器{it.eBodyText.matches('.*Syria.*')}?这将是一个很长的电子邮件正文列表。我用eBodyText limit 3更新了屏幕截图。我担心可能有一个空对象,过滤器停止迭代。我在studio中手动添加了一条新记录,并且找到了一条。我想我上传数据集的脚本有一些问题。我将添加一个链接到脚本也。