zoukankan      html  css  js  c++  java
  • Solr.NET快速入门(二)

    字典映射和动态字段

    Solr dynamicFields可以根据用例不同地映射。 它们可以被“静态地”映射,例如,给定:

    <dynamicField name="price_*"  type="integer"  indexed="true"  stored="true"/>
    

    一个特定的dynamicField实例可以映射为:

    [SolrField("price_i")]
    public decimal? Price {get;set;}
    

    然而,通常需要有更多的灵活性。 您还可以将dynamicFields映射为字典,并使用字段名前缀:

    [SolrField("price_")]
    public IDictionary<string, decimal> Price {get;set;}
    

    在这种情况下,price_用作实际Solr字段名称的前缀,例如。 使用此映射,Price [“regular”]映射到名为price_regular的Solr字段。
    另一个,甚至更灵活的映射:

    [SolrField("*")]
    public IDictionary<string, object> OtherFields {get;set;}
    

    对于任何其他未映射的字段,它充当全部容器。 例如。 OtherFields [“price_i”]映射到名为price_i的Solr字段。

    完全松散的映射

    通过使用Dictionary <string,object>作为文档类型,可以实现更加“动态”的映射。 在此文档类型中,字典键对应于Solr字段名称和值到Solr字段值。 在这种情况下,静态键入字段显然丢失了。

    当添加文档为Dictionary <string,object> SolrNet会像往常一样识别字段值类型,例如。 您可以使用字符串,int,集合,数组等。示例:

    Startup.Init<Dictionary<string, object>>(serverUrl);
    var solr = ServiceLocator.Current.GetInstance<ISolrOperations<Dictionary<string, object>>>();
    solr.Add(new Dictionary<string, object> {
      {"field1", 1},
      {"field2", "something else"},
      {"field3", new DateTime(2010, 5, 5, 12, 23, 34)},
      {"field4", new[] {1,2,3}},
    });
    

    当获取作为Dictionary <string,object>的文档时,SolrNet会自动将每个字段的值映射到.NET类型,但是你可以将字段值转换为正确的类型变量。 例:

    ISolrOperations<Dictionary<string, object>> solr = ...
    ICollection<Dictionary<string, object>> results = solr.Query(SolrQuery.All);
    bool inStock = (bool) results[0]["inStock"];
    

    自定义映射

    您可以通过实现IReadOnlyMappingManager接口对自己的映射机制进行编码。

  • 相关阅读:
    [转]cmd-bat批处理命令延时方法
    chrome pyv8下载
    win10锁屏壁纸路径
    MongoDB系列—— Window 搭建Mongodb 集群
    JS判断所有IE浏览器所有版本
    网页中引用优酷视频默认自动播放超清
    SQL 还原或备份失败数据库变成单个用户模式无法访问
    百度webuploader 上传演示例子
    SQL Server 如何更改SQL Server和windows身份方式验证
    已经阻止此发布者在你的计算机上运行软件
  • 原文地址:https://www.cnblogs.com/Wulex/p/6961934.html
Copyright © 2011-2022 走看看