我在我们的项目中实现了 Solr.net 搜索,目前索引中有 660k 文档(大小约为 185 Mb)。
不幸的是,solr 不时抛出 OutOfMemory 异常:
搜索联系人时出错 System.OutOfMemoryException:引发了“System.OutOfMemoryException”类型的异常。在 System.Text.StringBuilder.ToString() 在 System.IO.StreamReader.ReadToEnd() 在 SolrNet.Impl.SolrConnection.ReadResponseToString(IHttpWebResponse response) 在 c:\prg\SolrNet\SolrNet\Impl\SolrConnection.cs:line 213在 SolrNet.Impl.SolrConnection.GetResponse(IHttpWebRequest request) 在 c:\prg\SolrNet\SolrNet\Impl\SolrConnection.cs: 第 199 行在 SolrNet.Impl.SolrConnection.Get(String relativeUrl, IEnumerable'1 参数) 在 c: \prg\SolrNet\SolrNet\Impl\SolrConnection.cs:第 149 行在 SolrNet.Impl.SolrQueryExecuter'1.Execute(ISolrQuery q, QueryOptions options) 在 c:\prg\SolrNet\SolrNet\Impl\SolrQueryExecuter.cs:第 672 行在 SolrNet.Impl.SolrBasicServer'1.Query(ISolrQuery 查询,
但是代码很简单:
public ISolrOperations<ContactForSearch> SolrInstance
{
get
{
if (!_initialized)
{
Startup.Init<ContactForSearch>(ConfigurationManager.AppSettings.Get("SolrPath"));
_initialized = true;
}
return ServiceLocator.Current.GetInstance<ISolrOperations<ContactForSearch>>();
}
}
public virtual int SearchCount(string queryString, bool exactSearch)
{
return SolrInstance.Query(GetGeneralSearchQuery(queryString, exactSearch)).NumFound;
}
有可能有成千上万的联系人要返回一些查询,但我认为NumFound
应该只得到计数?那么,我该如何解决这个问题呢?提前感谢所有建议!