SolrNET - 根级别的数据无效。第 1 行,位置 1
SolrNET - Data at the root level is invalid. Line 1, position 1
我正在使用 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 returns json。为了解决这个问题,我在将 'wt' 设置为 xml 的查询中为查询选项传入了 extraparams。请参阅设置额外参数的文档。
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);
我正在使用 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 returns json。为了解决这个问题,我在将 'wt' 设置为 xml 的查询中为查询选项传入了 extraparams。请参阅设置额外参数的文档。
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);