JEDIS/REDIS“ON”关键字或损坏的查询?

问题描述 投票:0回答:1

对 REDIS 非常陌生,并且在使用 JSON/索引/查询时遇到问题,这让我发疯。

结构示例

public class MyType implements Serializable {
{
    @SerializedName("myval")
    @Expose
    private Integer myval;
    @SerializedName("status")
    @Expose
    private String status;
}

我可以轻松使用 redis-stack,并使用 JSON/GSON 推送此类。

当我尝试查询时出现问题。

我设置了一个看起来像这样的索引

 Schema testSchema = new Schema().addTextField("$.status",1.0);
 myJedis.ftCreate("STATUSINDEX",IndexOperations().setDefault(rule),testSchema);

然后我插入一些 json blob,一些状态为“on”,另一些状态为“OFF”

使用 redisInsight/Browser,我可以看到我的 json,状态为 ON 和 OFF,如之前设置的那样。

使用redisInsight/RediSearch: 如果我使用搜索 FT.SEARCH“STATUSINDEX”'@&.status:OFF'
我按预期得到了状态为“OFF”的 json 对象。

如果我使用搜索 FT.SEARCH“STATUSINDEX”'@&.status:ON'
我什么也没得到。

如果我重复测试,但在插入对象时用“MYON”代替“ON”,则搜索: FT.SEARCH "STATUSINDEX" '@&.status:MYON' 返回预期的 json 对象。

我一定做错了什么,或者“on”值被保留了??

蒂亚,韦恩

尝试了许多不同的测试和状态类型的组合。似乎只有使用“ON”才会发生

java redis jedis
1个回答
0
投票

我怀疑原因是您已将“状态”字段定义为索引架构中的文本。文本类型用于自由文本搜索,因此具有“停止词”的概念 - 被忽略的常见词 - 并且“on”可能就在那里。

您应该使用标签字段。

© www.soinside.com 2019 - 2024. All rights reserved.