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

我将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.


我收到一个错误:

Data at the root level is invalid. Line 1, position 1.


我正在使用默认架构,也尝试过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>


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

最佳答案

SolrNet doc page这样说:


  无论您给出什么,都会直接传递给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);

关于c# - SolrNET-根级别的数据无效。第1行,位置1,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46820113/

10-11 02:14