基本上我们希望能够在大型文档存储库的各个子集中进行搜索。我们正在考虑使用多值字段来存储当前所在子集的每个文档,并在搜索时对此字段进行过滤。问题是子集不断变化,因此我们必须经常添加新的子集并从该字段中删除旧的子集。
我已经读过,在更新Solr文档中的字段时,我必须更新整个文档,并通过删除旧副本并添加新副本来更新文档。如此频繁的更新将导致大量已删除的副本,并使内部查找表膨胀,性能下降。
我的问题是这种退化有多严重?有没有更好的方法来解决这个问题?毕竟这应该是一个常见的问题,我们立即想到的是搜索具有特定标签的文章并搜索用户最喜欢的文章(尽管我们自己的用例更复杂)。
我看了一下ExternalFileField,但似乎它不支持多值字段(我希望我错了),并且有太多不同的子集组合使用一个整数来表示组合(到将多值字段转换为单值字段。)