【发布时间】:2019-05-19 16:45:20
【问题描述】:
我正在尝试了解如何在 Redisearch 中严格使用“开头”来执行查询,但我不断收到“包含”。
例如,如果我的字段具有 'football'、'myfootball'、'greenfootball' 等值,并且会提供搜索词像这样:
> FT.SEARCH myIdx @myfield:foot*
我只想获得 'football',但我不断获得包含该单词而不是以该单词开头的其他字段。
有没有办法避免这种情况?
我试图使用VERBATIM 和@myfield:^foot* 之类的东西,但什么也没有。
我使用 JRedisearch 作为客户端,但最终我不得不进入数据库并手动执行这些查询,以便弄清楚发生了什么。话虽如此,目前这可能与该客户有关吗?
谢谢
编辑 我的索引设置示例:
Client client = new Client(INDEX_NAME, url, PORT);
Schema sc = new Schema().addSortableTextField("url", 1.0); // using this field for query
client.dropIndex(true);
client.createIndex(sc, Client.IndexOptions.Default());
return client;
示例文档:
id: // random uuid
urlPath: myfootbal
application: web
market: Europe
【问题讨论】:
-
您能否发布一个完整的示例(您存储的文档)?
-
@GuyKorland,已更新,希望没关系
-
你还能添加一些文档示例吗?问题是 redisearch 不支持包含(仅前缀)。所以我不明白你是如何获得包含的。需要一个完整的示例来创建此问题以便能够提供帮助。
-
我明白了,如果你表演:FT.SEARCH myIdx @urlPath:foot* 你要找回 myfootbal?
-
@MeirShpilraien,是的,这正是我的情况。抱歉耽搁了,我在 Spring I/O :)
标签: java redis redisearch