【问题标题】:How can i execute FT.CREATE using IDatabase.Execute如何使用 IDatabase.Execute 执行 FT.CREATE
【发布时间】:2021-11-28 16:48:25
【问题描述】:

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

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

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

现在我需要为数据创建索引,以便执行搜索操作。该索引应应用于 DataTable 中的所有 DataColumn。

我看到我们有 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);

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

【问题讨论】:

    标签: c# .net-core redis stackexchange.redis


    【解决方案1】:

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

    【讨论】:

    猜你喜欢
    • 2022-10-17
    • 2021-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-10
    • 1970-01-01
    • 2014-02-07
    • 2011-08-05
    相关资源
    最近更新 更多