是否可以将 SolrNet QueryOptions 转换为 Json 字符串?
Is it possible to convert SolrNet QueryOptions to Json string?
我正在使用以下代码使用 SolrNet 将 solr 请求从我的 Web 应用程序发送到 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。
任何人都可以建议我如何在我的缓存键中包含选项值?因为选项有方面、过滤器查询、Extraperms 字段等,这些值是数组格式。
我可以转换 json 字符串中的选项值吗? 然后将其添加到我的键值中。
我有转换使用下面的代码:
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];
使用序列化,我可以成功地将选项值添加到我的缓存键中。
我正在使用以下代码使用 SolrNet 将 solr 请求从我的 Web 应用程序发送到 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。
任何人都可以建议我如何在我的缓存键中包含选项值?因为选项有方面、过滤器查询、Extraperms 字段等,这些值是数组格式。
我可以转换 json 字符串中的选项值吗? 然后将其添加到我的键值中。
我有转换使用下面的代码:
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];
使用序列化,我可以成功地将选项值添加到我的缓存键中。