gpt4 book ai didi

c# - 如何以编程方式将内容类型添加到索引?

转载 作者:太空狗 更新时间:2023-10-29 23:21:23 25 4
gpt4 key购买 nike

我正在尝试以编程方式创建对应于多种类型的索引,这样我就可以在我的 Controller 中搜索特定类型的项目。 (我尝试在 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);
});

但这似乎可以替换之前配置的索引,如果它能正常工作的话(编辑:不),而且我不想破坏现有设置. (团队中的另一个人正在处理我们的设置方法。)

有什么地方可以让我触及该设置,并在配方文件之外存储它并供 Orchard 实际使用?


为了说明我试图使用类似的管理 UI 更改来完成什么,在 Content Definition > [Content Type Name] > Edit 下:

之前:

Content type definition before adding to index.

之后:

Content type definition after adding to index.

最佳答案

您正在寻找的是 Indexed() 扩展方法。它接受您要在内容类型上使用的索引。

ContentDefinitionManager.AlterTypeDefinition(nameof(contentType),type => 
type
.Indexed("FirstIndex", "SecondIndex"));

关于c# - 如何以编程方式将内容类型添加到索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34078906/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com