2

我正在为我的项目使用 Redisearch。项目中有不同的索引,比如job_idx、company_idx、article_idx和event_idx(article_idx和event_idx结构很相似)。该索引用于不同的页面,例如:职位页面搜索使用的job_idx,公司页面搜索使用的company_idx。

问题在主页上,搜索引擎应该从每个索引返回结果,所以我应该调用 search 4 次吗?我认为我的情况应该有更好的解决方案。

4

1 回答 1

3

FT.SEARCH命令允许您只传递一个索引作为参数。因此,如果您已经有 4 个索引,那么您需要调用该命令 4 次。

每个实体拥有一个索引通常是最简单的,但最后是一个问题,您如何设计物理数据模型以最好地支持您的查询。这可以从完全分离的索引到所有内容的单个索引(例如,具有类型字段的“all_fields”索引)。最好的实现可能在中间的某个地方(非常类似于关系数据库系统中的“规范化与非规范化数据库模式”)。

一个潜在的解决方案可能是创建一个附加索引(例如,combined_homepage),该索引对主页搜索所需的特定字段进行索引。然后,此索引将使您能够进行单次搜索。

然而,这个额外的索引确实需要额外的空间。因此,考虑到您不想从头开始重新考虑物理数据模型,您要么投资空间(内存)以实现更有效的访问,要么在计算和网络上花费更多(用于结合 4 个查询的结果客户端)。

希望这会有所帮助,即使我的回答基本上归结为“取决于”:-)。

于 2020-06-15T16:36:48.530 回答