我正在使用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的属性’内容‘”}
这里有什么问题吗?我跟踪了此链接
发布于 2013-12-18 18:32:28
您的问题是,在默认的schema.xml文件中,字段content是用multiValued=true定义的。告诉Solr允许该字段在单个文档中包含多个值,例如存储为数组。因此,您需要将Register中的Content属性更改为:
[SolrField("content")]
public ICollection<string> Content { get; set; } 如SolrNet映射文档所示。
https://stackoverflow.com/questions/20660569
复制相似问题