RediSearch - 搜索出现在许多记录中的特定单词需要很长时间如何改进它?

问题描述

我的地址数据库(作为哈希)有大约 3000 万条记录。我正在向所有地址字段添加文本索引。搜索看起来没问题,直到我想搜索出现在许多记录中的单词。例如,搜索出现在大约 2500000 条记录中的单词“London”需要 4.5 秒 (FT.SEARCH idx:a4 london LIMIT 0 2)。有没有可能改善这个结果,做任何改变?感谢您的帮助。

解决方法

如果你不关心得到按评分排序的前2个结果(由tfidf计算),你可以使用FT.AGGREGATE,它会在找到前2个结果后才返回(没有得到所有结果,计算分数,对它们进行排序,并获得前 2 个结果)。它应该是这样的:

FT.AGGREGATE idx:a4 london LIMIT 0 2

请注意,您应该使用 LOAD 来决定从散列中返回哪些字段。请参阅此处获取完整的 FT.AGGREGATE 文档: https://oss.redislabs.com/redisearch/Aggregations/

同样,如果您选择使用它,请知道您正在失去按结果分数排序。