我的每个索引文档都有一个多值字段user_ids_ims,其中包含与文档相关的用户ids。这个字段可能是空的。
<types>
<fieldType name="tint" class="solr.IntPointField" omitNorms="true"/>
</types>
<fields>
<dynamicField name="*_ims" type="tint" multiValued="true"/>
</fields>我希望对user_ids_ims包含特定id值(例如42 )或为空的所有文档进行筛选查询。例如,下列文件:
{ 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 1和Thing 2
我可以使用Page 1获得fq=!user_ids_ims:[* TO *]
我可以使用Thing 2获得fq=user_ids_ims:(42)
发布于 2018-04-10 17:56:34
实际的答案是将这两项要求结合在一起:
fq=user_ids_ims:(42) OR (*:* -user_ids_ims:[* TO *])后一个*:*很重要,因为您必须有一组文档来减去user_ids_ims:[* TO *]返回的集合。这将为您提供字段中有42或根本没有字段的任何文档。
发布于 2018-04-10 17:30:30
user_ids_ims字段使用用AUTO_INCREMENT定义的MySQL列的值填充,因此我知道0不是有效的id。有了这些知识,我可以分配:
{ id: 'Page 1', user_ids_ims: [0] }现在我有两个定义的值要搜索,这是很好的,即fq=user_ids_ims:(0 42)
https://stackoverflow.com/questions/49759435
复制相似问题