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 join和non join查询给出不同的结果_Join_Solr - Fatal编程技术网

Solr join和non join查询给出不同的结果

Solr join和non join查询给出不同的结果,join,solr,Join,Solr,我试图在我的Solr索引中链接两种类型的文档。父对象名为house,子对象名为available。因此,我想返回一个房屋列表,其中有一些过滤可用的文档。但是,下面的查询提供了大约18个文档,这是错误的。它应该返回0个文档 q=*:* &fq={!join from=house_id_fk to=house_id}doctype:available AND discount:[1 TO *] AND start_date:[NOW/DAY TO NOW/DAY%2B21DAYS] &

我试图在我的Solr索引中链接两种类型的文档。父对象名为house,子对象名为available。因此,我想返回一个房屋列表,其中有一些过滤可用的文档。但是,下面的查询提供了大约18个文档,这是错误的。它应该返回0个文档

q=*:*
&fq={!join from=house_id_fk to=house_id}doctype:available AND discount:[1 TO *] AND start_date:[NOW/DAY TO NOW/DAY%2B21DAYS]
&fq={!join from=house_id_fk to=house_id}doctype:available AND sd_year:2014 AND sd_month:11
为了调试它,我首先尝试检查是否有任何具有给定过滤器查询的可用文档。因此,我尝试了以下查询:

q=*:*
&fq=doctype:available AND discount:[1 TO *] AND start_date:[NOW/DAY TO NOW/DAY%2B21DAYS]
&fq=doctype:available AND sd_year:2014 AND sd_month:11
查询给出0个结果,这是正确的。正如您所看到的,两个查询都是相同的,不同的是使用连接查询解析器。我有点困惑,为什么第一个查询会给出结果。我的理解是,这不应该发生,因为第二个查询显示没有任何可用文档满足给定的筛选查询

我已经弄明白了

原因很简单,就是Solr中的连接类型。这是一个外部连接。由于这两个过滤查询都是单独执行的,因此,即使我的意图是同时应用麻烦条件,也将返回具有折扣>1或sd_year:2014和sd_month:11的可用文档的房屋

但是,在第二种情况下,同时应用这两个条件来查找可用文档,然后根据匹配的可用文档返回房屋。由于没有任何满足这两个条件的可用文档,因此没有任何匹配的房子给出零结果

这真的花了一些时间才弄明白,我希望这能帮助其他人