【问题标题】:How can we perform "Prefix Matching" in Redisearch over numbers?我们如何在 Redisearch 中对数字执行“前缀匹配”?
【发布时间】:2022-10-07 12:27:42
【问题描述】:

我有一个领域分数.它是一个数字字段,因此,根据 Redis,我们应该执行如下搜索:

@marks:[10 5000]

或者

@marks:[10 inf]

但我想要上面的功能以及下面的功能

@marks:10*

所以,我会得到一组类似这样的标记: {101, 102,..., 1011, 1012, 1021, 1022,..., 10011,...}

是否可以在 Redisearch 中,因为我找不到任何方法在数字字段上执行 @marks:10*

    标签: redis redisearch


    【解决方案1】:

    您可以使用两个不同的别名为同一字段编制索引,例如

    FT.CREATE myidx ON HASH PREFIX 1 doc: SCHEMA marks as marks-txt TEXT name as marks-num NUMERIC
    

    然后你可以同时做:

    @marks-num:[10 5000]
    

    @marks-txt:10*
    

    【讨论】:

    • 感谢@Guy 的回复。你不觉得会增加内存消耗吗?如果我们有 1000 个整数字段,那么我们将使它们加倍,即 2K 字段。
    • 它可能会增加内存,因为您需要在两种模式下索引两次,但它不会复制 Redis 键空间中的数据,因为它只是同一字段的别名。
    猜你喜欢
    • 2011-12-09
    • 1970-01-01
    • 2015-12-13
    • 1970-01-01
    • 2020-06-25
    • 2022-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多