0

私はSolrnetを使用して検索を行うことに取り組んでいます。これは私が望むように機能しています。ただし、クエリパラメータをWebページからSolrnetに渡すための最良の方法についてアドバイスが必要です。

私が理想的にやりたいのは、このサイトと同様のクエリ文字列パラメータを渡すことです。http://www.watchfinder.co.uk/SearchResults.aspx ?q = %3a&f_brand = Rolex&f_bracelets = Steel&f_movements=Automatic。

サイトのクエリ文字列からわかるように、SolrNetに直接渡されているように見えます。これが私が現在行っていることです(ファセットクエリセグメント):

パブリッククラスSoftwareSalesSearcher
    {{
        public static SoftwareSalesSearchResults Facet()
        {{
            ISolrOperations solr = SolrOperationsCache.GetSolrOperations(ConfigurationManager.AppSettings ["SolrUrl"]);

        //クエリ文字列を反復処理して、Solrnetにクエリを実行するために必要なフィールドを取得します
            リストqueryCollection=new List();
            foreach(HttpContext.Current.Request.QueryString.Keysの文字列キー)
            {{
                queryCollection.Add(new SolrQuery(String.Format( "{0}:{1}"、key、HttpContext.Current.Request.QueryString [key])));
            }

            var lessThan25 = new SolrQueryByRange( "SoftwareSales"、0m、25m);
            var moreThan25 = new SolrQueryByRange( "SoftwareSales"、26m、50m);
            var moreThan50 = new SolrQueryByRange( "SoftwareSales"、51m、75m);
            var moreThan75 = new SolrQueryByRange( "SoftwareSales"、76m、100m);

            QueryOptions options = new QueryOptions
            {{
                行=0、
                ファセット=新しいFacetParameters{
                    クエリ=new[] {新しいSolrFacetQuery(lessThan25)、新しいSolrFacetQuery(moreThan25)、新しいSolrFacetQuery(moreThan50)、新しいSolrFacetQuery(moreThan75)}
                                            }、
                FilterQueries = queryCollection.ToArray()
            };


            var results = solr.Query(SolrQuery.All、options);

            var searchResults = new SoftwareSalesSearchResults();

            リストsoftwareSalesInformation=new List();

            foreach(results.FacetQueriesのvarファセット)
            {{
                if(facet.Value!= 0)
                {{
                    SoftwareSalesFacetDetail salesItem = new SoftwareSalesFacetDetail();

                    salesItem.Price = facet.Key;
                    salesItem.Value = facet.Value;

                    softwareSalesInformation.Add(salesItem);
                }

            }

            searchResults.Results = softwareSalesInformation;
            searchResults.TotalResults = results.NumFound;
            searchResults.QueryTime = results.Header.QTime;

            searchResultsを返します。
        }       

    }

現時点では、次のクエリ文字列を追加して、現在のコードからすべての結果をクエリする方法がわかりません:q = :。

4

1 に答える 1

1

「パラメータがSolrNetに直接渡される」とはどういう意味かわかりません。ウォッチファインダーは、SolrNetサンプルアプリに含まれているモデルバインダーのバリエーションを使用しているようです。

また、サンプルアプリのコントローラーを見て、SolrNetパラメーターがどのように構築されているかを確認してください。

于 2011-01-13T14:44:51.800 に答える