如何在Optic API中使用fn:contains(),fn:starts-with()和fn:ends-with

Shivling Bhandare

早先我们使用FLOWR查询来满足我们的搜索需求,因为数据每天都在增加,所以我们决定使用索引来提高搜索性能。

工作流程查询(仅示例)

for $doc in collection("col1")
where fn:contains($doc//entityName/text(), "USA")
return document-uri($doc)

上面的查询正在工作,它返回一个文档URI,现在我们尝试使用Optic API来满足相同的要求。

我们为entityName创建了一个元素范围索引,但是不确定如何将上述FLOWR查询转换为Optic Query。

对于上述FLOWR查询,等效的光学查询将是什么?,而且将来我们也计划使用fn:starts-with()和fn:ends-with()函数。

我们正在使用MarkLogic 10.0-2.1

任何帮助表示赞赏

hen

创建TDE以投影实体属性后,等效的Optic查询在XQuery中类似于以下内容:

op:from-view(null, VIEW_NAME, '', op:fragment-id-col('docId'))
=> op:where(ofn:contains(op:col('entityName', 'USA'))
=> op:where(cts:collection-query(COLLECTION_NAME))
=> op:join-doc-uri('uri', op:fragment-id-col('docId'))
=> op:select('uri')
=> op:result()

在XQuery中,ofn必须导入库。

在SJS中,该op.fn字段提供等效功能:

op.fromView(null, VIEW_NAME, '', op.fragmentIdCol('docId'))
  .where(op.fn.contains(op.col('entityName', 'USA'))
  .where(cts.collectionQuery(COLLECTION_NAME))
  .joinDocUri('uri', op.fragmentIdCol('docId'))
  .select('uri')
  .result()

使用的操作:

  1. fromView() 进入实体视图
  2. where()在查询执行期间,第一个过滤列的值
  3. 第二个where()将实体行约束为匹配的源文档
  4. joinDocUri()加入基于实体行的源文件的URI词汇
  5. select()项目的“URI”列中,忽略了不必要的视图列。

joinDocUri() 是一个方便

.joinInner(
    op.fromLexicons({'uri':cts.uriReference()}, '', op.fragmentIdCol('uriDocId')),
    op.on(op.fragmentIdCol('docId'), op.fragmentIdCol('uriDocId'))
    )

光学表达功能还包括op.fn.startsWith()op.fn.endsWith()通常,光学表达式可以同时使用函数

  • 是内置的-换句话说,不需要导入或要求
  • 仅将其输入转换为输出-换句话说,它的功能纯粹,没有副作用或环境敏感性

另请参见以下表达式函数列表:

https://docs.marklogic.com/guide/app-dev/OpticAPI#id_69308

希望能有所帮助,

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在cloudforms“ Fn :: Sub”中转义“ $ {}”

如何从jQuery.fn.init()和jQuery.fn.init中取出特定值[prevObject:jQuery.fn.init()]

如何在XPath中使用starts-with(),contains()和ends-with()查找xml节点的内部文本?在XPATH 1.0中

如何在Rust函数签名中使用Fn特征(闭包)?

使用JSTL评估多个fn:contains()条件

如何在tf.estimator的input_fn中使用tf.data的可初始化迭代器?

如何用参数和返回类型(如Fn)定义特征?

试图在tensorflow的map_fn中使用if

如何在没有Home / End键和Fn键的键盘上导航代码?

如何在无服务器框架YAML中使用Fn :: Join?

Cloudformation:一起使用Fn :: Join和Fn:GetAtt

如何正确使用std :: transform和std :: mem_fn?

如何在cts:uris()中使用fn:starts-with()和fn:ends-with()

如何在“严格”和“非严格”模式的常规箭头fn中确定正确的“ this”?

如何在tensorflow中的map_fn中使用稀疏张量

在Fn :: if中使用多个Fn :: Sub

如何在Optic API中使用Optical-FN,Optical-JSON,Optical-XDMP,Optical-XS

如何在Mac上使用PC键盘按Fn键?

如何使用路由“用户/ {id?} / {fn?}”

如何反转Fn键

如何在Peewee ORM中使用fn对象

如何在XFCE上使用Ctrl + Fn + Num

当我使用Python map(Fn,Iterable)时如何在Fn中传递多个参数?

如何使用sequelize.fn(['if'])?

Fn键如何工作?

如何在 tmux 中使用 Fn 键?

如何在此给定代码中翻译 ::* 运算符和 member_fn?

如何在tf.map_fn的不同分支中使用不同的卷积层?

在 AWS CloudFormation 的 DashboardBody 中使用 Fn::FindInMap