2015-10-07 130 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。