恒晖瑶 发表于 2017-12-19 08:34:46

Solr.NET快速入门(二)

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

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

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

  
public decimal? Price {get;set;}
  

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


  
public>  

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


  
public>  

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

完全松散的映射
  通过使用Dictionary
  当添加文档为Dictionary
  

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
  

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

自定义映射
  您可以通过实现IReadOnlyMappingManager接口对自己的映射机制进行编码。
页: [1]
查看完整版本: Solr.NET快速入门(二)