簡體   English   中英

如果添加大量過濾器查詢,solrnet 會崩潰

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM