【问题标题】:Redis query is showing only 10 results while searching for a particular dataRedis 查询在搜索特定数据时仅显示 10 个结果
【发布时间】:2021-11-12 07:49:00
【问题描述】:

我有一个与 Redis/RediSearch 集成的 .net 核心微服务。我进行的搜索应该返回 13 个哈希文档,但只返回 10 个。在 elasticSearch 中有一个默认大小参数(10),但在 Redis 中我没有找到类似的。我该如何解决?


public  List<DynamicDoc> GetFullMoc(string queryParm){
    var redisConection = ConnectionMultiplexer.Connect(GetParameter("REDIS_SERVER"));
    var dbRedis = new Client("feeders", redisConection.GetDatabase());

    string searchString = "@MOC:" + queryParm;
    NRediSearch.Query query = new NRediSearch.Query(searchString);
    
    string[] returnFields = { "Moc", "H_W","H_Y", "F"};
    query.ReturnFields(returnFields);
    query.WithPayloads = true;

    SearchResult res =  dbRedis.Search(query);
    List<DynamicDoc> dynamicDocs = new List<DynamicDoc>();


    foreach (Document doc in res.Documents)
    {
        IEnumerable<KeyValuePair<string, RedisValue>> record = doc.GetProperties();
        string jsonRecord = JsonConvert.SerializeObject(record);
        Dictionary<string, object> _record = JsonConvert.DeserializeObject<Dictionary<string, object>>(jsonRecord);
        
        Console.WriteLine("\n \n \n ================" + doc.Id + "================ \n \n \n");
        foreach(var rec in _record){
            Console.WriteLine(rec);
        }
        
        DynamicDoc dynamicDoc = new DynamicDoc()
        {
                id = doc.Id,
                score = doc.Score,
                payload = _record
        };
        dynamicDocs.Add(dynamicDoc);
        
    }
    return dynamicDocs;

}

动态文档:

namespace cached_data_manager.Business.Interface
{
    public class DynamicDoc
    {
        public string id { get; set; }
        public double score { get; set; }
        public Dictionary<string, object> payload{ get; set; }
    }
}

【问题讨论】:

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


    【解决方案1】:

    FT.SEARCH 命令有一个可选的LIMIT 参数,它接受两个参数,offsetnum。默认值分别为 0 和 10。

    来自命令说明:

    LIMIT first num :将结果限制为给定的偏移量和结果数。请注意,偏移量是零索引的。默认为 0 10,从第一个结果开始返回 10 项。

    这里是完整的命令描述:https://oss.redis.com/redisearch/Commands/#ftsearch


    要在 NRediSearch.Query 中以编程方式执行此操作,请使用 Limit 选项。例如

    query.Limit(0, 10000); 
    

    【讨论】:

    • 我明白了!我可以从终端使用 rediSearch 来完成,但以编程方式我不知道该怎么做。你能帮我吗?
    • Consegui,在 NRediSearch.Query 查询中存在参数限制。巴斯塔塞塔query.Limit(0, 1000000);
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-24
    • 1970-01-01
    • 1970-01-01
    • 2023-03-25
    • 2019-03-17
    相关资源
    最近更新 更多