-1

我有一个与 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; }
    }
}
4

1 回答 1

1

FT.SEARCHcommand 有一个可选LIMIT参数,它接受两个参数,offset并且num. 默认值分别为 0 和 10。

从命令描述:

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

以下是完整的命令说明:https ://oss.redis.com/redisearch/Commands/#ftsearch


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

query.Limit(0, 10000); 
于 2021-09-19T13:24:23.387 回答