是否可以将SolrNet QueryOptions转换为Json字符串?

时间:2015-10-07 06:49:42

标签: .net json solr solrnet

我使用SolrNet从我的Web应用程序向Solr发送solr请求,使用以下代码:

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 Fields等,这些值是数组格式。

我可以在json字符串中转换选项值吗?然后将其添加到我的键值。

1 个答案:

答案 0 :(得分: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]; 

使用序列化我可以成功地将选项值添加到我的缓存键。