簡體   English   中英

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 doc頁面上說:

無論您給出什么,它都會直接傳遞給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);

我發現默認情況下solrnet返回json。 為了解決這個問題,我在查詢中為用於將'wt'設置為xml的queryoptions傳遞了Extraparams。 請參閱文檔以設置額外的參數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM