Sensenet长度过滤器不工作

时间:2016-10-07 13:10:54

标签: rest odata sensenet

我想使用Sensenet Odata Rest API查询空的字段,哪些字段不为空。他们的文档提到了一个名为“length”的过滤函数。我试图用长度操作查询字段,但它失败并出现错误。

这是我使用的过滤器

// Only send 'new user' event to previously connected clients, not the new client.
  var i = 0;
  for(i=0;i<allClients.length;i++){
    allClients[i].emit('new user', socket.address + '_' + socket.port);
  }

Sense / Net 6.5.4.9496

例外

.clipboard {
    overflow:auto;
    max-height:240px  
}

Wiki Link http://wiki.sensenet.com/OData_REST_API

1 个答案:

答案 0 :(得分:2)

length 操作错误地包含在支持的方法列表中,我们为此道歉。 SenseNet将这些过滤器编译为 Lucene 查询,并且无法在Lucene中编写对字段执行操作的此类查询。

(其余方法,如 substringof startswith 可以很容易地编译成通配符表达式,因此应该可以工作)

很遗憾&#39;空&#39; Lucene也不支持表达式,因为它们的文档/术语结构。因此,以下表达式也不起作用:

Description eq ''

修改:作为解决方法,开发人员可以创建自定义字段索引处理程序

对于要检查空白的每个字段(例如 Description ),您可以在内容类型定义中创建技术隐藏的bool字段( IsDescriptionEmpty )。您必须创建和定义的唯一事项是自定义字段索引处理程序类。在你的情况下,它将继承内置的 bool字段索引处理程序,你可以根据目标字段(在本例中为Description)是否为空来返回一个布尔索引值。

在此之后,您可以定义搜索范围,如下所示:

+Type:File +IsDescriptionEmpty:true

请查看下面的wiki文章和索引处理程序示例的源代码。

How to create a field indexhandler