2011-10-03 35 views
0

是否可以在同一个SOLR(3.1+)请求中执行多个空间查询?SOLR(3.1+) - 具有相同请求中的OR的多个空间查询

我们目前需要允许用户通过前端搜索表单搜索具有他们选择的位置的库存。但我们还希望在幕后添加另一个空间搜索,以便包含更多的广告资源。由此产生的搜索将导致一个维恩图类型的搜索。

编辑2011年4月10日

实施例构建体:Q = *:* & FQ = &元数=位置& {geofilt!}(客户端Id: “客户端1” & PT = 40.68063802521456,-74.00390625 & d = 80.4672) %20OR%20_query _ :(客户端Id: “客户端2” & PT = 36.1146460,-115.1728160 & d = 80.4672)

上述结构不工作,但希望证明什么,我试图完成。

+0

你最终做了什么?我面临着类似的情况,我需要在多个位置进行地理空间搜索索引。 – kdawg

+0

老实说,我记得这么久了。转移到另一个项目,并从那以后一直没有回来。 –

回答

0

看起来,你喜欢在一个请求中运行N个查询,以便为每个查询获得一个结果集?!

所以字段崩溃(http://wiki.apache.org/solr/FieldCollapsing)是你在找什么。不幸的是,FieldCollapsing只能从3.3版本获得。

根据您的需要,也许从不同分面搜索的计数结果也可能有用?

+0

感谢您的回复,看来我的问题有点含糊。我更新了一个示例结构。然而,我要去看看fieldCollapsion。 –

0

如果你移动你的第二个位置查询到额外的过滤器的查询,如下图所示:

q=*:*&fq={!geofilt}&sfield=Location&(ClientId:"client1"&pt=40.68063802521456,-74.00390625&d=80.4672)&fq={!geofilt}&sfield=Location&(ClientId:"client2"&pt=36.1146460,-115.1728160&d=80.4672)

威尔是提供您正在寻找的结果?它可能最终会受到限制,但认为这值得尝试。

你也可以试试:

q=*:*&fq={!geofilt}&sfield=Location&((ClientId:"client1"&pt=40.68063802521456,-74.00390625&d=80.4672)%20OR%20(ClientId:"client2"&pt=36.1146460,-115.1728160&d=80.4672))

+0

我会给他们一个镜头。感谢您的意见。 –

1

这是旧的,但它似乎并不像它曾经有一个完整的答案。我有同样的问题,并发现这种语法的工作原理:

q =*:*& fq = (({ 
      !geofilt sfield = Location pt = 40.68063802521456, 
      -74.00390625 d = 80.4672 
     } 
      AND ClientId : "client1")OR({ 
      !geofilt sfield = Location pt = 36.1146460, 
      -115.1728160 d = 80.4672 
     } 
      AND ClientId : "client2")) 
相关问题