我目前正在结合使用 elasticsearch 和橡皮筋 gem 来索引在线目录中的项目。我的用例如下:
一个项目可以有多个子项目,例如其中包含多个故事的漫画书。这些故事在 items 文档中被索引为嵌套文档,并具有三个特定功能。一个故事:
- 有一个或多个作家
- 有一名或多名插画师
- 是系列的一部分或有零个或多个英雄。
如果用户给出了搜索词,我将在这三个功能上应用构面,并添加构面过滤器。给定的搜索词也用于查询整个索引。有时,用户正在搜索漫画书中的特定故事。如果是这样,我希望这些方面返回那个特定故事的作家、插画家和系列,而不是整个漫画书的方面,但没有办法提前知道这一点。用户只需填写搜索词,不区分搜索漫画书还是搜索故事。对于这个问题,我想到了以下解决方案:
- 如果给定的搜索词在应用于构面过滤器时返回构面,那么我假设用户正在搜索漫画书中的故事并且可以返回构面
- 如果给定的搜索词在应用于构面过滤器时没有返回构面,那么我假设用户正在搜索漫画书本身,并且必须删除过滤器才能返回构面。
我想知道弹性搜索中是否有可能告诉分面过滤器在没有返回分面的情况下自行删除?