我如何使用 IDatabase.Execute 执行 FT.CREATE

How can i execute FT.CREATE using IDatabase.Execute

我在 .Net core 应用程序中使用 StackExchange.RedisNRediSearch

我有一个 .Net DataTable 并使用 IDatabase.HashSetAsync 方法从该 DataTable 中的数据创建了散列键,它们如下所示 -

products:1
products:2
...
products:n

现在我需要在数据上创建索引以便执行搜索操作。该索引应应用于数据表中的所有数据列。

我看到我们有 IDatabase.Execute 命令来执行此操作,但它不起作用。

ConnectionMultiplexer s_redis = ConnectionMultiplexer.Connect("...:6379,password=...");
var db = s_redis.GetDatabase();
var indexCommand = $"FT.CREATE idx:{key} ON HASH PREFIX 1 {key}: SCHEMA"; //here key = products
foreach(DataColumn dataColumn in dataTable.Columns)
{
    indexCommand += $" {dataColumn.ColumnName} TEXT";
}
db.Execute(indexCommand);

但这会引发错误 - 'exceeds library limit of 31 bytes' 我花了一些时间在谷歌上搜索文档,但没有任何运气。有人可以帮助我以正确的方式做到这一点吗?

NRediSearch 库通常应该使它变得多余。但是,如果您确实需要手动执行此操作:每个 keyword/etc 都是 redis 的不同参数。该命令只是 "FT.CREATE",带有 7 个(随便看)参数的数组。