2015-10-07 42 views
1

我從我的web應用程序的Solr的使用SolrNet發送Solr的請求,使用下面的代碼:是否可以將SolrNet QueryOptions轉換爲Json字符串?

SolrQueryResults<MyClass> results= solrCustomWorker.Query(new SolrQuery(query), options); 

其中期權價值是這樣的:

options = new QueryOptions 
         { 
          Rows = pageSize, 
          Start = (pageIndex - 1) * pageSize, 
          FilterQueries = _solrQuery.ToArray(), 
          OrderBy = new[] { new SolrNet.SortOrder("NameCopy", SolrNet.Order.ASC) }, 
          Facet = new FacetParameters 
          { 
           Queries = _solr.ToArray(), 
           MinCount = minCount, 
          }, 
          Stats = statsParams 
         }; 

現在我想添加對象緩存此請求所以如果正在處理相同的請求,則它將從緩存中獲取值,而不是再次將請求發送到Solr。

任何人都可以請建議如何在我的快捷鍵中包含選項值?由於選項有facet,filterqueries,Extraperms字段等,這些值是數組格式。

我可以在json字符串中轉換選項值嗎?然後將其添加到我的鍵值。

回答

0

我有轉換使用下面的代碼:

using System.Web.Script.Serialization; 

    //code 
string json = new JavaScriptSerializer().Serialize(options); 
string solrRequestCacheKey = "solrRequestCacheKey-" + query + "-" + json; 
var policy = new CacheItemPolicy(); 
SolrQueryResults<MyClass> temp; 
if (CustomCache[solrRequestCacheKey] == null) 
    { 
    temp = solrCustomWorker.Query(new SolrQuery(query), options); 
    CustomCache.Add(solrRequestCacheKey, temp, policy); 
    } 
    results = (SolrQueryResults<MyClass>)CustomCache[solrRequestCacheKey]; 

使用序列我可以成功添加選項值到我的cachekey。

相關問題