Indexing Solr无模式模式创建多值字段

Indexing Solr无模式模式创建多值字段,indexing,solr,solrnet,schemaless,Indexing,Solr,Solrnet,Schemaless,我在无模式模式下使用Solr6.1。创建集合并为样本数据编制索引后,所创建的字段都设置为MultiValued=true,唯一id除外 问题是,当使用SolrNet查询此数据时,它无法将结果正确映射到模型。查询的结果作为数组返回,并要求将模型中的所有my属性更新为ICollection类型 在为样本数据编制索引时,是否可以将这些字段设置为MultiValued=false 举例说明问题: 1) 在无模式模式下为以下模型的示例编制索引: public class TestModel { [

我在无模式模式下使用Solr6.1。创建集合并为样本数据编制索引后,所创建的字段都设置为MultiValued=true,唯一id除外

问题是,当使用SolrNet查询此数据时,它无法将结果正确映射到模型。查询的结果作为数组返回,并要求将模型中的所有my属性更新为ICollection类型

在为样本数据编制索引时,是否可以将这些字段设置为MultiValued=false

举例说明问题:

1) 在无模式模式下为以下模型的示例编制索引:

public class TestModel
{
    [SolrUniqueKey("id")]
    public int Id { get; set; }

    [SolrField("guid")]
    public Guid Guid { get; set; }
}
2) Solr的托管模式文件将添加以下字段

  <field name="guid" type="strings"/>
  <field name="id" type="string" multiValued="false" indexed="true" required="true" stored="true"/>

无模式模式使所有内容都
多值化
,因为它不知道同一字段是否有单值后跟多值。因此,它使所有字段都具有多值性,并将数字类型升级到最大值


如果你很了解你的领域,这是很容易调整的。整个映射链在solrconfig.xml的更新请求处理器链()中定义,您可以将类型映射从多值类型更改为等效的单值类型。对于字符串,您更改了
defaultFieldType

中的值,因此,您询问是否有一种方法可以在无模式模式下进行索引,并且仍然以某种方式将一个字段设置为只有singleValue,对吗?是的,我正试图在无模式下运行Solr,但动态字段创建将所有内容都创建为多值类型。这样做会导致将结果映射回模型时出现问题,而不会将我的所有属性转换为ICollection类型。谢谢Alex,这是非常有用的信息,但是如果我将默认类型定义为单值类型,当我尝试为多值数组类型建立索引时会发生什么情况?换句话说,这将如何影响字段创建的常规工作?如果您手动执行此操作,您如何知道每个新字段应为单值字段还是多值字段?它是按名称模式(您可以对其应用映射)?您是否提前知道例外情况(如中)?是否要?到目前为止,将默认值更改为单值类型效果很好,不再存在映射问题,因为所有字段都是以单数类型创建的。因为我现在需要索引的所有字段都是单数类型,但不确定它是否会扩展到数组和复杂模型。我不确定在那一点上它将如何处理,我想我将不得不测试它以查看。
Object of type 'System.Collections.ArrayList' cannot be converted to type