[英]solrnet crashes if you add a lot of filter queries
我们在 ASP.NET 核心后端中使用solrnet 。 在startup.cs
中,它的初始化如下:
public void ConfigureServices(IServiceCollection services)
{
services.AddSolrNet<SolrPunt>(solrEndpointAddressForPunt, setup =>
{
setup.HttpClient.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Basic", credentialsBase64);
});
}
搜索代码本身非常简单。 我们注入一个ISolrOperations<solrEndpointAddressForPunt>
的实例,并相应地使用它:
var queryOptions = new QueryOptions
{
FilterQueries = new List<ISolrQuery>()
};
// FilterQueries are added
var solrResponse = await solrOperationsVoorPunten.QueryAsync("*:*", queryOptions);
这一切正常,我们正确收到结果。
但是,如果我们添加很多过滤查询,比如超过 105 个,就会抛出异常:
根级别的数据无效。 1号线,position 1
我想知道为什么会这样以及如何解决这个问题。
它与 XML/JSON 设置无关,因为它与少量过滤器查询完美配合。
我认为这与 GET 请求的限制有关。 但是后来我读到它通常应该自动切换到POST? 我可以告诉 solrnet 始终使用 POST 吗? 如果是这样,如何在 ASP.NET 内核中做到这一点?
还是有其他限制导致了这种情况?
感谢您的任何建议!
我想我找到了。 而不是在 for 循环中连接字段:
solrQueryByField = solrQueryByField || new SolrQueryByField(filterVeld, filterValue);
...我只是使用SolrQueryInList
:
queryOptions.FilterQueries.Add(new SolrQueryInList(filterVeld, filterValues));
随着这个变化,它开始工作......
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.