[英]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.