Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用“重新搜索查询”;以“开始”;而不是",;包括「;_Java_Redis_Redisearch - Fatal编程技术网

Java 使用“重新搜索查询”;以“开始”;而不是",;包括「;

Java 使用“重新搜索查询”;以“开始”;而不是",;包括「;,java,redis,redisearch,Java,Redis,Redisearch,我试图理解如何严格地用“begins with”来执行RedSearch中的查询,并且我一直得到“contains” 例如,如果我有值为“football”、“myfootball”、“greenfootball”的字段,并提供如下搜索词: >FT.SEARCH myIdx@myfield:foot* 我只想得到‘football’,但我一直得到其他包含该词的字段,而不是以该词开头 有没有办法避免这种情况 我试图使用逐字记录和类似@myfield:^foot*的东西,但什么都没有 我使用JRed

我试图理解如何严格地用“begins with”来执行RedSearch中的查询,并且我一直得到“contains”

例如,如果我有值为“football”、“myfootball”、“greenfootball”的字段,并提供如下搜索词:

>FT.SEARCH myIdx@myfield:foot*

我只想得到‘football’,但我一直得到其他包含该词的字段,而不是以该词开头

有没有办法避免这种情况

我试图使用
逐字记录
和类似
@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

在检查了提供的RDB后,我发现在搜索foot*时,您没有得到MyFootball。回复如下所示:/com/plp/football/x/index.html。您得到这些回复是因为此url已标记化,“/”是标记化字符之一。如果不希望这些URL被标记化,则需要将它们声明为标记而不是文本。这样,整个url将按原样编制索引,当搜索foot*时,它将不会出现在结果中


有关标签的更多信息,请参阅FT.CREATE文档:

能否发布完整示例(您存储的文档)?@GuyKorland,已更新,希望如此。您还可以添加一些文档示例吗?问题是RedSearch不支持contains(仅支持前缀)。所以我不明白你是怎么得到的。Gone需要一个创建此问题的完整示例才能提供帮助。我明白,如果您执行:FT.SEARCH myIdx@urlPath:foot*您要取回我的足球?@meirshpillaien,是的,这正是我的情况。抱歉耽搁了,我当时在Spring I/O:)我没有提到我的领域中有
/
,对此表示抱歉。然而,当谈到标记化时,文档并没有提到任何关于正向斜杠的内容它指定了以下字段:
,.{}[]”:;!@$%^&*()-+=~
。至少我不清楚这是问题所在,并且正斜杠是标记化的。此外,通过使用标记,我失去了进行通配符搜索的好处(例如:
/gts/foot*
等等)这不是我想要的。你可以用标签做前缀,这样你就不会失去这个能力。