1

我已经实现了空间搜索,需要在 Solr 中为距离的范围或“桶”生成构面:以下链接在这里帮助了我 - http://wiki.apache.org/solr/SpatialSearch#How_to_facet_by_distance

我发现以下问题的解决方案在 solr 中对距离进行分面 - 如何生成在给定距离范围内搜索的链接很有帮助。

我正在使用 Solrnet 从基于 .NET 的站点生成 Solr 查询。我找不到可以帮助我生成查询的边框部分(斜体)的链接,如下所示。请帮助指向我使用 solrnet 生成此代码的代码。

&q= : &sfield=store&pt=45.15,-93.85**&facet.query={!frange l=0 u=5}geodist()&facet.query={!frange l=5.001 u=3000}geodist()**.

4

1 回答 1

3

我假设您已经在使用ExtraParams设置 sField & pt 参数。您应该也可以向其中添加 facet.query 参数。

var results = solr.Query(SolrQuery.All, new QueryOptions
{
    ExtraParams = new Dictionary<string, string> {
                { "sfield", "store" } , 
                { "pt", "45.15,-93.85" }
                { "facet.query", "{!frange l=0 u=5}geodist()" } ,
                { "facet.query", "{!frange l=5.001 u=3000}geodist()" } ,
            }
 });

return results;

此外,您也许可以SolrFacetQuery结合使用LocalParams来构建方面查询。检查以下链接以获取一些示例:

更新: 如评论中所述,ExtraParams由于它是字典对象,因此无法使用,因此不允许使用多个 facet.query 参数。但是,我能够使用上面链接的 SolrNet Facet Wiki 页面中描述的 Facet 查询来创建以下内容:

var facet1 = new SolrFacetQuery(new SolrQuery("{!frange l=0 u=5}geodist()}"));
var facet2 = new SolrFacetQuery(new SolrQuery("{!frange l=5.001 u=3000}geodist()}"));
var results = solr.Query(SolrQuery.All, new QueryOptions
    {
        ExtraParams = new Dictionary<string, string>
            {
                {"sfield", "store"},
                {"pt", "45.15,-93.85"}
            },
        Facet = new FacetParameters
            {
                Queries = new[]
                    {
                        facet1, facet2
                    }
            }
    });
return results;
于 2013-02-26T20:55:11.337 回答