Solr子查询合并问题

时间:2015-04-24 09:53:20

标签: apache solr lucene subquery

我在以下方案中使用SOLR进行搜索时遇到问题

我希望将所有产品都放在我最喜欢的标签,类别和用户中。我希望我喜欢的用户创建的所有产品都没有任何过滤器,但必须在选定的位置过滤喜欢的标签或类别的产品。我试过如下,

http://www.example.com:8983/solr/collection1/select?rows=10&start=0&wt=json&indent=true&sort=event_start_date asc&q=status:1 AND event_start_date:[2015-04-23T21:38:00Z TO *] AND ( tags:5539d77455061a650f96c67e OR category1_id:53d16fb28066a12606bbb5f2 OR category2_id:53d16fb28066a12606bbb5f2&fq={!geofilt d=40.2335}&pt=9.9312328,76.26730409999999&sfield=latlng) OR ( user_id:5465da1dc54d3c2a15000000 )

但它不起作用。任何人帮我查找我的查询有什么问题?

1 个答案:

答案 0 :(得分:1)

首先,在查询子句(检查括号)中有一个fq(filterquery子句),这是错误的。

fq={!geofilt d=40.2335}&pt=9.9312328,76.26730409999999&sfield=latlng

您可以尝试将geofilt过滤器查询OUTSIDE主查询与测试放在一起,以便在...时跳过它...

http://www.example.com:8983/solr/collection1/select?rows=10&start=0&wt=json&indent=true&sort=event_start_date asc&q=status:1 AND event_start_date:[2015-04-23T21:38:00Z TO *] AND (tags:5539d77455061a650f96c67e OR category1_id:53d16fb28066a12606bbb5f2 OR category2_id:53d16fb28066a12606bbb5f2) OR (user_id:5465da1dc54d3c2a15000000) &fq=user_id:5465da1dc54d3c2a15000000 OR {!geofilt pt=9.9312328,76.26730409999999 sfield=latlng d=40.2335}

如果user_id为5465da1dc54d3c2a15000000,则filterquery已经为true,因此位置部分被跳过