SOLR(3.1+) -在同一请求中具有OR的多个空间查询



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

我们目前需要允许用户通过前端搜索表单搜索他们选择的位置的库存。但我们还想在幕后添加另一个空间搜索,这样它将包括更多的库存。由此产生的搜索将导致一个维恩图类型的搜索。

编辑10.4.2011

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

上面的结构不起作用,但希望能说明我想要完成的任务。

这个问题很老了,但似乎从来没有得到过完整的答案。我遇到了同样的问题,发现这个语法可以工作:

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"))

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

所以字段崩溃(http://wiki.apache.org/solr/FieldCollapsing)是你正在寻找的。不幸的是,fieldcollapse只在3.3版本可用。

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

如果您将第二个位置查询移动到另一个过滤器查询中,如下面所示:

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))

相关内容

  • 没有找到相关文章

最新更新