SolrNET - 根级别的数据无效。线路 1,位置 1

Rus*_*ail 3 c# solr solrnet

我在 localhost:8983/solr/global 上使用Solar:7.0.1

我使用SolrNET 0.8.1 和以下代码示例:

using SolrNet;
using Microsoft.Practices.ServiceLocation;

Startup.Init<SOLRModel>("http://localhost:8983/solr/global");
var solr = ServiceLocator.Current.GetInstance<ISolrOperations<SOLRModel>>();
var results = solr.Query(new SolrQuery("*:*&wt=xml")); // Throws Error Here.
Run Code Online (Sandbox Code Playgroud)

我收到错误:

Data at the root level is invalid. Line 1, position 1.
Run Code Online (Sandbox Code Playgroud)

我使用默认模式,也尝试了 techproducts 示例,得到相同的错误。

我可以导航到:http://localhost:8983/solr/global/select?q= 我得到正常的 JSON 响应。

使用&wt=xml给我格式良好的 XML 响应:

<?xml version="1.0" encoding="UTF-8" ?> 
- <response>
    - <lst name="responseHeader">
           <int name="status">0</int> 
          <int name="QTime">0</int> 
    - <lst name="params">
        <str name="q">*:*</str> 
        <str name="wt">xml</str> 
    </lst>
    </lst>
<result name="response" numFound="0" start="0" /> 
</response>
Run Code Online (Sandbox Code Playgroud)

请有人告诉我在哪里可以解决这个错误。

rya*_*yan 5

SolrNet文档页面是这样说的:

无论你提供什么,它都会直接传递给 Solr 的 q 参数

不应&wt=xml传递给q参数,SolrNet 需要将其完全视为一个单独的参数。这适用于您想要设置的任何其他参数,例如开始、排序等。

正确的方法是使用重载solr.Query(ISolrQuery query, QueryOptions options)并通过属性传递这些参数ExtraParams

一个完整的例子:

using SolrNet;
using Microsoft.Practices.ServiceLocation;

Startup.Init<SOLRModel>("http://localhost:8983/solr/global");
var solr = ServiceLocator.Current.GetInstance<ISolrOperations<SOLRModel>>();

var options = new QueryOptions();

options.ExtraParams = new KeyValuePair<string,string>[] {
    new KeyValuePair<string,string>("wt", "xml")
};

var results = solr.Query(new SolrQuery("*:*"), options);
Run Code Online (Sandbox Code Playgroud)