首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >对可能为空的多值字段的Solr筛选查询

对可能为空的多值字段的Solr筛选查询
EN

Stack Overflow用户
提问于 2018-04-10 17:12:55
回答 2查看 1.3K关注 0票数 1

我的每个索引文档都有一个多值字段user_ids_ims,其中包含与文档相关的用户ids。这个字段可能是空的。

代码语言:javascript
运行
复制
<types>
  <fieldType name="tint" class="solr.IntPointField" omitNorms="true"/>
</types>

<fields>
  <dynamicField name="*_ims" type="tint" multiValued="true"/>
</fields>

我希望对user_ids_ims包含特定id值(例如42 )或为空的所有文档进行筛选查询。例如,下列文件:

代码语言:javascript
运行
复制
{ id: 'Page 1', user_ids_ims: [] }
{ id: 'Thing 1', user_ids_ims: [19, 24, 92] }
{ id: 'Thing 2', user_ids_ims: [19, 24, 42, 92] }
{ id: 'Thing 7', user_ids_ims: [19, 24, 92] }

如何使用fq来包含一组文档,包括Page 1Thing 2

我可以使用Page 1获得fq=!user_ids_ims:[* TO *]

我可以使用Thing 2获得fq=user_ids_ims:(42)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-04-10 17:56:34

实际的答案是将这两项要求结合在一起:

代码语言:javascript
运行
复制
fq=user_ids_ims:(42) OR (*:* -user_ids_ims:[* TO *])

后一个*:*很重要,因为您必须有一组文档来减去user_ids_ims:[* TO *]返回的集合。这将为您提供字段中有42或根本没有字段的任何文档。

票数 3
EN

Stack Overflow用户

发布于 2018-04-10 17:30:30

user_ids_ims字段使用用AUTO_INCREMENT定义的MySQL列的值填充,因此我知道0不是有效的id。有了这些知识,我可以分配:

代码语言:javascript
运行
复制
{ id: 'Page 1', user_ids_ims: [0] }

现在我有两个定义的值要搜索,这是很好的,即fq=user_ids_ims:(0 42)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49759435

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档