Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
仅当多值字段上有两个值且没有其他值时才匹配的Solr查询_Solr - Fatal编程技术网

仅当多值字段上有两个值且没有其他值时才匹配的Solr查询

仅当多值字段上有两个值且没有其他值时才匹配的Solr查询,solr,Solr,类似这样的查询: &q=im_field_teams:(4667 AND 4675) docs: [ { im_field_teams: [ 4675, 4667 ] }, { im_field_teams: [ 4660, 4702, 4675, 4667, 4684, ] } 将返回如下结果: &q=im_field_teams:(4667 AND 4675) docs: [ { im_fie

类似这样的查询:

&q=im_field_teams:(4667 AND 4675)
docs: [
{
  im_field_teams: [
    4675,
    4667
  ]
},
{
  im_field_teams: [
    4660,
    4702,
    4675,
    4667,
    4684,
  ]
}
将返回如下结果:

&q=im_field_teams:(4667 AND 4675)
docs: [
{
  im_field_teams: [
    4675,
    4667
  ]
},
{
  im_field_teams: [
    4660,
    4702,
    4675,
    4667,
    4684,
  ]
}
太棒了!当然,我也会得到这样的值:

&q=im_field_teams:(4667 AND 4675)
docs: [
{
  im_field_teams: [
    4675,
    4667
  ]
},
{
  im_field_teams: [
    4660,
    4702,
    4675,
    4667,
    4684,
  ]
}
这正是我想要避免的

我想要一个“只有”或“没有”之类的。在多值字段中仅包含一对值(不多,不少)的匹配文档

(值得一提的是:似乎有效,但感觉真的错了。)


没有直接的方法可以做到这一点。但是有一些变通方法/可能的选项可以完成(见下文),但查询语法可能更简单。如果有重叠的范围和多个and子句,使用否定的查询有时会变得棘手

在索引期间,在多值字段中添加另一个具有数组大小的字段。例如,如果文档有(466047024674684),则此字段的大小将为5。在查询时间中,根据要添加的条目数包括此字段。在这种情况下,如果您正在搜索
q=im\u field\u teams:(4667和4675)
则添加另一个子句
和im\u field\u teams\u size:2
条件。这将确保所有条款都匹配,并且只有那些条款匹配