1

私は空間検索を実装しており、Solr で距離の範囲または「バケット」のファセットを生成する必要があります。

次の質問への解決策が見つかりました 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

ExtraParamssField と 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 ページで説明されているように、ファセット クエリを使用して以下を作成することができました。

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 に答える