我在以下方案中使用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 )
但它不起作用。任何人帮我查找我的查询有什么问题?
答案 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,因此位置部分被跳过。