使用“开头为”而不是“包含”的Redisearch查询

Urosh T .:

我试图了解如何在Redisearch中严格使用“ begins with”(开始于)进行查询,并且不断收到“ contains”。

例如,如果我的字段具有诸如'football''myfootball''greenfootball'之类的值,并提供如下搜索词:

> FT.SEARCH myIdx @myfield:foot*

我只想获取“足球”信息,但我一直在获取包含该单词的其他字段,而不是以该单词开头。

有办法避免这种情况吗?

我试图使用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
更多Shpilraien:

在检查了提供的RDB之后,我发现在搜索foot *时,您并没有感到不适。答复如下:/dot-com/plp/football/x/index.html。之所以会得到这些答复,是因为此URL已被标记化,并且'/'是标记化字符之一。如果您不希望对这些URL进行标记,则需要将其声明为TAGS而不是TEXT。这样,整个网址将按原样编制索引,当搜索foot *时,它不会出现在结果中。

有关TAGS的更多信息,请参见FT.CREATE文档:https ://oss.redislabs.com/redisearch/Commands.html

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何编写查询以在RediSearch中同时包含和排除标签?

如何使用MarkLogic cts:query()执行“开头为”查询

使用RediSearch请求特定字段(不是所有字段)

清理查询RediSearch

Redisearch:增强查询短语匹配

mysql php 查询字符串包含以输入开头的单词

加入查询,而不是使用NOT IN

如何使用wsgi在URL路径中包含变量?(不是查询字符串)

开头为

查询结果为true而不是false

检查WMI ManagementObject查询是否为Nothing,而不是使用Try / Catch?

使用 CTE 而不是子查询

如何使用 tee 追加到文件的开头,而不是最后?

如何使用查找/替换以字符开头而不是字符结尾

Reqex不是以空格开头,只有字母可以包含空格

在Nuxt页面中包含以$开头的Javascript代码段-返回this。$不是函数

Eclipse内容辅助:通过“包含短语”而不是“以短语开头”进行过滤

为短程序的对象创建单独的类,而不是使用包含main的类,是否被视为一种好习惯?

在MongoDB聚合查询中使用以$开头的字段

使用 Retrofit 将查询参数附加到 URL 的开头

使用路径和查询字符串将包含目录路径和参数的 URL 重写为基于参数的 URL

使用 Drivine 和 Neo4j,如何将查询内联为字符串,而不是注入单独的文件

使用 where 条件的 Laravel 连接查询将比较值读取为字符串而不是字段值

我如何在Jquery中使用开头为

在单个类名上使用“开头为”选择器

使用“开头为”选择器获取类名称值

htaccess重写规则。将不是以/ en开头的URL重写为/ en / *

RediSearch-在错误日志中查看完整查询

查询实体包含类型为ArrayList <String>的属性,该属性使用Spring Data JPA包含一组特定的字符串