我尝试以编程方式创建与多种类型相对应的索引,因此我可以在控制器中搜索特定类型的项目。 (我尝试在Lucene中使用type
关键字,但无论我做什么,这似乎根本不起作用,所以我改变了我的方法。)
但是,我无法弄清楚如何告诉Orchard在迁移中的索引中包含特定类型。我尝试使用:
var typeIndexing = ContentDefinitionManager.GetTypeDefinition(contentType)
.Settings.GetModel<TypeIndexing>();
typeIndexing.List = typeIndexing.List.Concat(indexName.Yield()).ToArray();
但是,null
只会返回GetTypeDefinition()
。
我正在使用:
ContentDefinitionManager.AlterTypeDefinition(contentType, builder => {
builder.WithSetting("TypeIndexing.Indexes", indexName);
});
但似乎替换之前配置的索引,如果它完全有效(编辑: nope),我不想破坏它现有设定。 (团队中的另一个人正在处理我们的设置配方。)
是否有任何地方我可以触摸该设置并将其存储并由Orchard在配方文件之外实际使用?
为了说明我尝试使用类似的管理界面更改完成的操作,请在内容定义&gt;下进行操作。 [内容类型名称]&gt;修改:
答案 0 :(得分:4)
您正在寻找的是Indexed()扩展方法。它接受您要在内容类型上使用的索引。
ContentDefinitionManager.AlterTypeDefinition(nameof(contentType),type =>
type
.Indexed("FirstIndex", "SecondIndex"));