我正在使用solr 4.6和Jetty以及客户端最新的solrnet构建(1672)。我没有对solrconfig.xml或schema.xml做任何更改,因为我需要的只是文档的内容和id。我的班级是:
public class Register
{
[SolrUniqueKey("id")]
public string Id { get; set; }
[SolrField("content")]
public string Content { get; set; }
[SolrField("text")]
public string Text{get;set;}
}
我将文档插入到solr中,代码为:
using (FileStream fileStream = File.OpenRead(filePath))
{
var response =
Solr.Extract(
new ExtractParameters(fileStream, txtId.Text)
{
ExtractFormat = ExtractFormat.Text,
ExtractOnly = false,
});
}
Solr.Commit();
我的问题是我无法突出显示工作。我突出显示的代码:
QueryOptions options =
new QueryOptions{Highlight = new HighlightingParameters{Fields = new[] {"id", "content", "text"}}};
SolrQueryByField query = new SolrQueryByField("text", "nhibernate");
var res = Solr.Query(query, options);
执行第三行时,我收到错误:
{“无法将值'System.Collections.ArrayList'转换为文档类型SolrTest.Register的属性'Content'”}
这里有什么问题?我关注了this link
答案 0 :(得分:2)
您的问题是,在默认schema.xml文件中,字段content
定义为multiValued=true
。告诉Solr在单个文档中允许该字段的多个值,例如存储为数组。因此,您需要将Register类中的Content属性更改为以下内容:
[SolrField("content")]
public ICollection<string> Content { get; set; }
所示