问题标签 [redisearch]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
334 浏览

elasticsearch - Redisearch 中的多边形查询

阅读https://redislabs.com/blog/search-benchmarking-redisearch-vs-elasticsearch/后, RediSearch看起来很有希望。我们目前使用弹性搜索。我们严重依赖其多边形查询功能https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-geo-polygon-query.html

我在 RediSearch 中找不到多边形查询。它有不同的名字吗?有没有人使用 RediSearch 进行多边形查询?你如何做到这一点?

目前,我看到的唯一选择是使用地理过滤器来获取不同圆圈中的点,然后在应用程序代码中找到这些点与我的多边形的交集。

0 投票
2 回答
889 浏览

docker - How do I make redisearch docker image persist data?

I'm using redislabs redisearch docker image locally for working with redisearch, but I would like the created indexes and documents still be there after restarting the redisearch container. I tried volume mapping - it didn't work. What did you do to make it persist?

0 投票
0 回答
77 浏览

frequency - Redisearch 中的词频

Redisearch 有没有办法获得搜索词的频率?例如,如果我在 Redisearch 中有以下文档

有没有办法计算每个文档中“lorem”这个词的数量?

我尝试了这个聚合命令,但无法获得搜索词的频率。

0 投票
0 回答
89 浏览

redis - Is it possible - use redisearch for caseless search?

So, using redisearch-py, search by 'test' and 'TEST' gives for me different results. How i can make a query for caseless full text search?

0 投票
1 回答
1079 浏览

java - 使用“begin with”而不是“contains”的 Redisearch 查询

我试图了解如何在 Redisearch 中严格使用“开头”来执行查询,并且我不断得到“包含”。

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

> FT.SEARCH myIdx @myfield:foot*

我只想获得“足球”,但我不断获得包含该单词而不是以该单词开头的其他字段。

有没有办法避免这种情况?

我试图使用VERBATIM和类似的东西,@myfield:^foot*但没有。

我使用 JRedisearch 作为客户端,但最终我不得不输入数据库并手动执行这些查询,以便弄清楚发生了什么。话虽如此,目前这可能与该客户有关吗?

谢谢

编辑 我的索引设置示例:

样本文件:

0 投票
1 回答
250 浏览

caching - 使用 redisearch 进行不区分重音的搜索

是否可以使用 redisearch 进行不区分重音的搜索?我需要与 SqlServer Collat​​ions 提供的功能相同的功能。

例如,索引Atsargų likučiai pagal sandėlius中有一个字符串。应该通过查询字符串likučiailikuciai找到它。

简单而肮脏的解决方案是存储多个版本的文本 - 真实和规范化,规范化所有查询,搜索规范化版本并返回真实版本作为结果。但是对于数百万个文档,此解决方案将消耗大量内存。有没有一种干净的方法可以做到这一点?

0 投票
1 回答
1250 浏览

redisearch - Redisearch ft.mget 命令对单个查询中的文档 ID 数量是否有限制?

我想将数以万计的文档 ID 传递给 ft.mget 命令,甚至更多——甚至可能是数十万。这支持吗?

0 投票
1 回答
530 浏览

angular - 如何对多页的加密文档实现全文搜索?

我有数百个文档,每个文档都有几页。用户可以在文档中搜索单词或句子。现在我期待所有包含搜索文本的文件。

目前使用 Angular 作为前端的 REST API。

我刚刚检查了Elastic search

重新搜索全文搜索

我喜欢 redisearch 搜索,但我不确定它有多安全,因为它首先在实际数据上创建索引。

我的观点是:

  1. 使用这两种搜索方法的优缺点是什么。
  2. 如果文件被加密,他们会工作吗
  3. 是否有任何其他框架提供非常安全的加密文档并在文件加密时搜索实际数据(显然首先解密然后动态搜索)
0 投票
1 回答
1623 浏览

redis - 使用 RediSearch 对实体进行简单的字符串和整数索引

我需要在 Redis 中存储简单的实体对象 (C#)。我还需要使用二级索引和精确匹配来搜索它们。在为 Redis natvie 数据类型苦苦挣扎之后,我选择尝试使用 RediSearch 来完成这项任务。

但是我找不到如何以我需要的方式使用它。

我的目标很简单。实体数据结构非常简单。例如,我有一个Device听起来像这样的类(我省略了大多数不得索引的字符串/整数字段,因此与示例无关):

我需要存储Device类的实例并检索它们:

  • 单独地,通过SerialNumber
  • 作为ServerNode和/或的列表Status

我正在从 MySQL 切换到 Redis,并且只是为了制作一个 sql 等效项,我正在尝试复制这些 sql-where 子句中的任何一个:

  • WHERE SerialNumber = 'RK01:"12345678"'
  • WHERE ServerNode = 'Node-US-01'
  • WHERE Status BETWEEN 1 AND 3
  • WHERE ServerNode = 'Node-IT-04' AND Status = 4

我的项目是用 C# 编写的,并且我已经开始使用 StackExchange.Redis 和 NRediSearch 包。

我无法弄清楚如何创建正确的模式索引(通过 redis-cli),也无法理解如何使用 NRediSearchClient类正确存储实体。

我不需要任何全文或标记化/停用词/等。RediSearch 的功能,只是“简单的纯”文本和整数索引。

我的第一个问题是字符串中存在标点符号(主要是连字符,但在某些情况下还有双引号)。

我创建了一个基于TAGNUMERIC字段类型的架构:

我尝试通过以下方式通过 NRediSearch 添加“文档”(但也通过 redis-cli 进行测试):

通过 redis-cli:

通过 NRediSearch

如果我在 redis-cli 中键入任何这些命令,我​​会在屏幕上转储正确的设备实体: > FT.GET Device obj:Device:1> HGETALL obj:Device:1

现在的问题是:我无法对这些索引执行任何查询。首先,我不清楚命令行上正确的查询语法;以下是一些无效的示例:

>FT.SEARCH Device @ServerNode:{Node-US-01}

>FT.SEARCH Device "@ServerNode:{Node-US-01}"

>FT.SEARCH Device @ServerNode:"{Node-US-01}"

>FT.SEARCH Device @ServerNode:{"Node-US-01"}

>FT.SEARCH Device @SerialNumber:{RK01:\"12345678\"}

我要么收到语法错误,要么没有结果。

我知道序列号字符串有点奇怪,但我无法更改它的格式。

我应该在文档中存储转义版本的字符串值吗?哪个是重现与类似 sql 的 where 子句相同的结果的正确语法?以及如何处理在值本身中包含双引号 (") 的字段值的字符串搜索?

最后但并非最不重要的一点是,我找不到任何关于使用 NRediSearch Query 类和 QueryBuilder 命名空间的说明性示例或文档(但在我了解 RediSaerch 如何“思考”之后,这可能会变得不那么晦涩难懂)。

0 投票
1 回答
204 浏览

full-text-search - Redisearch:提升查询短语匹配

当查询中的短语匹配时,Redisearch 是否有任何方法来提升,即使它不是一个精确的短语查询,例如,如果搜索是sushi bar,the sushi bar review应该超过sushi is best, bar none,而两者仍然匹配。我想知道这样的提升是否是默认行为,或者如果不是,有没有办法在查询中设置它?

如果是这样,它是否需要NOOFFSETS关闭(因为我认为它会依赖于偏移数据)?

ElasticSearch 的类似问题。似乎有一个答案,should而不是must,但我认为这不是 Redisearch 的事情。我还想知道 Redisearch 程序集是否可以处理它,但不确定语法是否可以以这种方式进行提升。