12

スキーマをセットアップするときにファセット検索が組み込まれていますか、それともこれをセットアップするためにいくつかのことを行う必要がありますか?

基本的に、並べ替え可能に設定したすべてのフィールドで、箱から出してすぐに機能しますか?

次に、fqクエリ構文を使用すると、検索結果とともにファセットxmlが返されますか?

初めてあなたを助けたこれに関する素晴らしい記事はありますか?

4

5 に答える 5

19

はい、すぐに使用できるインデックス付きフィールドをファセットできます。ただし、データ型に応じてファセットフィールドを構成するまで、期待する結果が得られない場合があります。

ファセットが有効になり、fqではなくfacet。*パラメーターを介して使用されます。fqは、ユーザーがファセット値を選択するときに使用されます。

いくつかの優れたSolrチュートリアル:

于 2010-03-01T17:19:34.480 に答える
10

はい、&facet=true&facet.field={fieldname}リクエストにURLを追加するだけです。

ここに別のチュートリアルがあります:ファセット

于 2011-07-26T19:08:20.003 に答える
2

SolrNetパッケージを使用したC#の以下のコード。ファセットは、SOLRに格納されているフィールドで実行できます。その文字列を確認し、より良い結果を得るためのスペースがないことを確認してください。mincountは、ファセットにリストされる最小数を制限するためのものです。

        QueryOptions options = new QueryOptions
        {                
            Facet = new FacetParameters
            {
                Queries = new ISolrFacetQuery[]
                {
                    new SolrFacetFieldQuery("field1"),
                    new SolrFacetFieldQuery("field2")
                },
                MinCount = 20
            }
        };

そして、結果を取得するための以下のコード、query-はフロントエンドで入力された検索です。

    var result = solr.Query(query, options);
于 2017-01-18T19:17:40.993 に答える
0

Apachesolrリファレンスガイドからのファセット。

于 2016-06-28T07:48:11.430 に答える
0

C#のNugetパッケージのSolrNetパッケージは、これを実現する簡単な方法を提供します。ドキュメントが役立ちます。これが例です、

public async Task SolrFaceting()
    {
        Console.WriteLine("facets");
        var facetQuery = await _solr.QueryAsync(SolrQuery.All, new QueryOptions
        {
            Rows = 0,
            Facet = new FacetParameters
            {
                Queries = new[]
                {
                    new SolrFacetFieldQuery("FieldName1"),
                    new SolrFacetFieldQuery("FieldName2"),
                    new SolrFacetFieldQuery("FieldName3"),
                    new SolrFacetFieldQuery("FieldName4"),
                },
                Limit = 10

            }
        });

        foreach (var facet in facetQuery.FacetFields["FieldName1"]) {
            Console.WriteLine("{0}: {1}", facet.Key, facet.Value);
        }
        foreach (var facet in facetQuery.FacetFields["FieldName2"]) {
            Console.WriteLine("{0}: {1}", facet.Key, facet.Value);
        }
        foreach (var facet in facetQuery.FacetFields["FieldName3"]) {
            Console.WriteLine("{0}: {1}", facet.Key, facet.Value);
        }
        foreach (var facet in facetQuery.FacetFields["FieldName4"]) {
            Console.WriteLine("{0}: {1}", facet.Key, facet.Value);
        }
    }
于 2019-10-08T08:17:55.440 に答える