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

RediSearch - searching for particular word which occurs in many records take long time. How to improve it?

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

如果您不关心按评分(由 tfidf 计算)排序的前 2 个结果,您可以使用 FT.AGGREGATE,它会在找到前 2 个结果后 return(不获取所有的结果,计算分数,排序,得到前2个结果)。它应该是这样的:

FT.AGGREGATE idx:a4 london LIMIT 0 2

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

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