我使用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字符串中转换选项值吗?然后将其添加到我的键值。
答案 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];
使用序列化我可以成功地将选项值添加到我的缓存键。