c# - SolrNET - 根级别的数据无效。第 1 行,位置 1

标签 c# solr solrnet

我正在使用 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是这样说的:

Whatever you give it is passed straight to Solr's q parameter

不应将 &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/

相关文章:

以 JSON 格式返回的 Solr 搜索返回值包含在数组中

solr - 如何在 Solr 中进行常量分数查询

solr - 为来自 Solr 的 Facet 设置自定义顺序

c# - 创建具有不同页数和自动分页符的可打印表单

c# - 从 .NET 开始 - ASP.NET、WPF、Silverlight 或命令行 C#?

c# - 自旋锁和只读字段

java - solr boost函数的目的

c# - 在内存中查找 DLL 的地址

Solr 获取日期范围

solr - 使用 SolrNet 从控制台应用程序查询 Solr?