我们在我们使用的文档管理器中实现Solr搜索。当用户请求搜索给定目录中的所有文档时,我们被迫将用户所选文档的docid
聚合成一个数组并发送
SolrQueryInList("docid", arrFileNames)
如果用户目录中的文件数量非常大,则生成的http请求也是如此。 Ergo ,我们决定使用SolrPostConnection。在我们的网站中,我们按照M. Scheeffer's instructions在Windsor容器中实现PostSolrConnection装饰器:
public SolrSearchRepository(int caseID, string solrServer)
{
this.facility = new SolrNetFacility(solrServer);
this.facility.AddCore(caseID.ToString(), typeof(SolrDocument),
string.Format("{0}/{1}", solrServer, caseID));
this.container = new WindsorContainer();
this.container.Register(Component.For<ISolrConnection>()
.ImplementedBy<PostSolrConnection>()
.DependsOn(Parameter.ForKey("serverUrl").Eq(solrServer)));
this.container.AddFacility(this.facility);
solrOperation = this.container
.Resolve<ISolrOperations<SolrDocument>>(caseID.ToString());
}
但是,我们仍然收到以下错误:
{"Message":"An error has occurred.","ExceptionMessage":"The remote server returned an
error: (400) Bad Request.","ExceptionType":"System.Net.WebException","StackTrace":"
at System.Net.HttpWebRequest.GetResponse()\r\n at
HttpWebAdapters.Adapters.HttpWebRequestAdapter.GetResponse()\r\n at
SolrNet.Impl.SolrConnection.GetResponse(IHttpWebRequest request)\r\n at
SolrNet.Impl.SolrConnection.Get(String relativeUrl, IEnumerable`1 parameters)"}
我们使用Tomcat 7.0服务器。日志非常统一。这是我发起搜索时似乎发生的事情的粘贴素:
我注意到命令永远不会到达服务器。 PostSolrConnection没有实现post
吗?请注意,此查询适用于少量文件(即docid
)