【问题标题】:OrientDB: text searching using gremlinOrientDB:使用 gremlin 进行文本搜索
【发布时间】:2016-08-04 16:36:30
【问题描述】:

我正在使用 OrientDB 和随附的 gremlin 控制台。

我正在尝试在文本属性中搜索模式。我有带有 ebodyText 属性的电子邮件顶点。问题是使用类似 SQL 的命令和 Gremlin 语言查询的结果是完全不同的。

如果我使用类似 SQL 的查询,例如:

select count(*) from Email where eBodyText like '%Syria%'

它返回 24。

但如果我在 gremlin 控制台中查询,例如:

g.V.has('eBodyText').filter{it.eBodyText.matches('.*Syria.*')}.count()

它不返回任何内容。

使用不同关键字“memo”的相同查询由 SQL 返回 161,但由 gremlin 返回 20。

为什么会这样? gremlin 命令的语法有问题吗?有没有更好的方法在 gremlin 中搜索文本?

我猜在使用 python 驱动程序“pyorient”的上传脚本中设置属性可能存在问题。 Python script used to upload the dataset

感谢您的帮助。

【问题讨论】:

    标签: sql orientdb graph-databases gremlin pyorient


    【解决方案1】:

    我用 2.1.15 试过了,没问题。

    这些是记录。

    已编辑

    我在我的数据库中添加了一些顶点,现在count() 是 11

    查询:

    g.V.has('eBodyText').filter{it.eBodyText.contains('Syria')}.count()
    

    输出:

    ==>11
    

    希望对你有帮助。

    【讨论】:

    • 这很有趣。我的版本是 2.1.13,但我认为这不是问题所在。应该是文本编码问题吗?还是长度?
    • 我刚刚重新安装了它,在 2.1.15 中遇到了同样的问题。如果您需要更多信息,请告诉我,谢谢~!!
    • @NeoJi 你能分享以下查询的所有结果吗?从电子邮件中选择 eBodyText 像 '%Syria%' 和 gVhas('eBodyText').filter{it.eBodyText.matches('. *叙利亚。*')}?
    • 这将是一长串电子邮件正文。我用 eBodyText 限制 3 更新了屏幕截图。我担心可能存在空对象并且过滤器停止迭代。
    • 我在工作室中手动添加了一条新记录,并且找到了该记录。我想我上传数据集的脚本有问题。我还将添加一个脚本链接。
    猜你喜欢
    • 2020-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-24
    • 1970-01-01
    • 2012-11-06
    • 2018-12-11
    • 1970-01-01
    相关资源
    最近更新 更多