Solr join和non-Join查询会产生不同的结果

时间:2014-07-13 22:06:24

标签: join solr

我正在尝试在Solr索引中链接两种类型的文档。父母被命名为#34; house"这个孩子被命名为#34;可用"。所以,我想返回一个包含一些过滤的可用文档的房屋列表。但是,以下查询给了我大约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结果,这是正确的。因此,您可以看到两个查询都是相同的,不同的是使用连接查询解析器。我有点困惑,为什么第一个查询给出结果。我的理解是,这不应该发生,因为第二个查询显示没有任何可用的文档满足给定的过滤器查询。

1 个答案:

答案 0 :(得分:0)

我已经弄清楚了。

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

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

确实需要花一些时间来解决这个问题,我希望这会有助于其他人。