我如何使用 IDatabase.Execute 执行 FT.CREATE
How can i execute FT.CREATE using IDatabase.Execute
我在 .Net core
应用程序中使用 StackExchange.Redis
和 NRediSearch
。
我有一个 .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 个(随便看)参数的数组。
我在 .Net core
应用程序中使用 StackExchange.Redis
和 NRediSearch
。
我有一个 .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 个(随便看)参数的数组。