【问题标题】:How to do a fulltext query within a arangodb graph with aql, blueprints and http interface?如何使用 aql、蓝图和 http 接口在 arangodb 图中进行全文查询?
【发布时间】:2014-06-26 21:51:24
【问题描述】:

说,我有属性为“文本”的顶点和该属性的全文索引。

在 arango 2.1.2 shell 中,我可以查询顶点

g._vertices.fulltext("text","my text value")

db.v.fulltext("text","my text value")

但如果我使用 blueprints-arangodb-graph-1.0.8,则蓝图实现触发的请求看起来像

http://{arangodb}/_db/testdb/_api/graph/test_graph/vertices

与身体:

{"batchSize":1,"count":false,"filter":{"properties":[{"key":"text","value":"my text value":"=="}]}}

这是非常低效的,因为它会遍历每个顶点。

那么,是否可以高效地进行查询

  • aql
  • 蓝图
  • 还有http接口?

非常感谢。

更新: 我通过 HTTP 找到了简单的全文查询

http://{arangodb}/_db/testdb/_api/simple/fulltext

和正文:

{ "collection": "test_vertices", "attribute" : "text", "query" : "my text value" }

UPDATE-2 我找到了 AQL:

FOR v in FULLTEXT(test_vertices, 'text', 'my text value') RETURN v

【问题讨论】:

    标签: arangodb aql


    【解决方案1】:

    假设您的集合称为“顶点”,而您的属性是“文本”。

    在 AQL 中,您可以使用“FULLTEXT”(参见 http://docs.arangodb.org/Aql/Operators.html):

    arangosh [_system]> db._query("return FULLTEXT(vertices, 'text', 'hallo')").toArray()
    [ 
      [ 
        { 
          "_id" : "vertices/268953710", 
          "_rev" : "268953710", 
          "_key" : "268953710", 
          "text" : "hallo hugo" 
        }, 
        { 
          "_id" : "vertices/269150318", 
          "_rev" : "269150318", 
          "_key" : "269150318", 
          "text" : "hallo emil" 
        }, 
        { 
          "_id" : "vertices/268757102", 
          "_rev" : "268757102", 
          "_key" : "268757102", 
          "text" : "hallo world" 
        } 
      ] 
    ]
    

    对于 HTTP,您可以使用 AQL 的 HTTP 接口和上述 FULLTEXT 函数。

    您也可以使用“PUT /_api/simple/fulltext”端点直接执行全文搜索(参见http://docs.arangodb.org/HttpSimpleQuery/README.html)。

    【讨论】:

    • 看起来比较简单,但是没有可用的光标。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多