2011-11-22 58 views
0

我有一个相当“复杂”的场景,我需要能够处理来自n个来源的信息 - 每个来源都有自己的结构。为了数据转换的目的,我构建了一个灵活的“黑盒子”,可以描述给定源可用的列/属性。它还可以创建多值属性,而任意数量的列可以被聚合并索引到Solr字段中。SolrNet适当的映射方法

我希望能够尽可能灵活地处理这个问题,因此我想使用通过SolrNet提供的各种映射方法。读过“Solr映射文档”后,似乎“完全松散的映射”可能提供我正在寻找的内容。

现在,为了确保我正确理解这一点:我是否仍然可以提供“str_title”作为词典中的键,并且将“A标题”作为词典中的值提供,并且它会正确映射到上面提到的声明?

我很感激,如果有人可以帮助我,因为这将会对如何继续影响...

希望这是有道理:)

回答

2

是完全松散的映射会为您提供能力按照您所描述的定义映射并获得预期的Solr索引结果。

编辑:

你可以做到以下几点,这将映射两侧...

<dynamicField name="str_*" type="string" ... /> 

然后映射为以下,这将两个插入和检索文档工作来自索引。

传统制图:

[SolrField("str_")] 
Dictionary<string, object> myDynamicStrings { get; set; } 

然后,您可以添加到字典中的项目,就像以下:

myDynamicStrings.Add("title", "A title"); 

完全松散映射:

Dictionary<string object> myDynamicFields { get; set; } 
    myDynamicFields.add("str_title", "A title"); 

钍e同样适用于解析/访问Solr查询的结果。

+0

嗨,佩奇!听起来不错,但我想添加一些东西到我原来的发布,因为它似乎已经消失:(我假设schema.xml文件包含dynamicField声明映射“str_ *”,例如,一个类型=“字符串” 。所以你要确认的是,如果我提供了key =“str_title”和value =“一个标题”,这将通过SolrNet提供的松散映射成功地映射出来? – Kodo

+0

请参阅编辑示例...另外,如果你编辑你的问题并在你的代码片段周围打上“#”,他们会显示出来 –

+0

@PaigeCook:这个答案是正确的,但我认为Kodo询问的是http://code.google.cn中描述的“完全松散映射”选项。 .com/p/solrnet/wiki/Mapping#Fully_loose_mapping,即直接使用字典,而不是带有SolrField属性的自定义类(是的,这也可以按预期工作) –