You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

RavenDB 6.0迁移至6.2:C#代码指定Lucene/Corax索引类型方法

在RavenDB 6.2中通过C#代码指定索引类型(兼容旧版Lucene索引)

完全可以通过C#代码指定索引类型,无需依赖UI操作,以下是具体实现方式:

1. 创建新索引时指定类型

在创建复杂索引时,通过IndexCreationOptions的IndexType属性强制使用Lucene引擎(替代默认的Corax):

using Raven.Client.Documents;
using Raven.Client.Documents.Indexes;

// 定义你的复杂索引
public class OrderSummaryIndex : AbstractIndexCreationTask<Order>
{
    public OrderSummaryIndex()
    {
        Map = orders => from order in orders
                        select new 
                        {
                            order.CustomerId,
                            TotalAmount = order.Lines.Sum(l => l.Quantity * l.Price),
                            order.OrderDate
                        };

        // 这里可以添加你的复杂索引逻辑(如Reduce、TransformResults等)
    }
}

// 在代码中创建索引并指定类型
using var store = new DocumentStore
{
    Urls = new[] { "http://localhost:8080" },
    Database = "YourDatabase"
};
store.Initialize();

var indexOptions = new IndexCreationOptions
{
    IndexType = IndexType.Lucene // 强制使用Lucene索引类型
};

await store.Maintenance.Send(
    new PutIndexesOperation(new OrderSummaryIndex().CreateIndexDefinition(), indexOptions)
);

2. 修改现有索引的类型

如果需要将已存在的Corax索引切换为Lucene类型,可以通过以下代码更新:

// 获取目标索引的现有定义
var existingIndex = await store.Maintenance.Send(new GetIndexOperation("OrderSummaryIndex"));

// 创建更新选项并指定索引类型
var updateOptions = new IndexCreationOptions
{
    IndexType = IndexType.Lucene
};

// 提交索引更新
await store.Maintenance.Send(new PutIndexesOperation(existingIndex, updateOptions));

相关文档位置

在RavenDB官方文档中,你可以在以下章节找到相关细节:

  • Indexes > Index Types:详细介绍Lucene与Corax索引的差异及配置方式
  • API Reference > IndexCreationOptions:包含IndexType属性的官方说明

内容的提问来源于stack exchange,提问作者Display name

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 11:10:56