2011-01-13 14 views
0

私はしたい方法で動作しているSolrnetを使用して検索を行っています。しかし、私は自分のWebページから自分のクエリパラメータをSolrnetに渡す最善の方法についていくつかアドバイスをしたいと思います。 http://www.watchfinder.co.uk/SearchResults.aspx?q=% 3aの & f_brand =ロレックス& f_bracelets =鋼& f_movements =自動:Bast Way On Solrnetにクエリパラメータを渡す

私は理想的にやりたいことは、このサイトがそれをしないのと同じように私のクエリ文字列パラメータを渡すです。

サイトクエリ文字列からわかるように、SolrNetに直接渡されているようです。ここで私は、瞬間(ファセットクエリセグメント)でそれをやっている:

 
public class SoftwareSalesSearcher 
    { 
     public static SoftwareSalesSearchResults Facet() 
     { 
      ISolrOperations solr = SolrOperationsCache.GetSolrOperations(ConfigurationManager.AppSettings["SolrUrl"]); 

     //Iterate through querystring to get the required fields to query Solrnet 
      List queryCollection = new List(); 
      foreach (string key in 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 
      { 
       Rows = 0, 
       Facet = new FacetParameters { 
        Queries = new[] { new SolrFacetQuery(lessThan25), new SolrFacetQuery(moreThan25), new SolrFacetQuery(moreThan50), new SolrFacetQuery(moreThan75) } 
              }, 
       FilterQueries = queryCollection.ToArray() 
      }; 


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

      var searchResults = new SoftwareSalesSearchResults(); 

      List softwareSalesInformation = new List(); 

      foreach (var facet in results.FacetQueries) 
      { 
       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; 

      return searchResults; 
     }  

    } 

私は、次のクエリ文字列を追加することにより、私の現在のコードからすべての私の結果を照会することができる方法を見ているように見えることができない瞬間:Q =

答えて

1

"パラメータがSolrNetに直接渡される"という意味がわかりません。 watchfinderはmodel binder included in the SolrNet sample appの一部を使用しているようです。

さらに、controller in the sample appを参照して、SolrNetパラメータの構築方法を確認してください。

+0

ああ、ありがとうMauricio。それは私が達成しようとしているもののように見えます。私はそれを与えるだろう! – R100

関連する問題