2

我需要将我的 SOLR 索引分成两半。事实证明,我已经有一个 STRING 字段,它代表我需要的分区信息。意思是,要搜索的一种记录是字符串字段存在于记录中并包含值的地方,另一种是不包含值的地方。所有查询都必须指定要搜索的分区。现在,使用否定字段查询搜索该字段对我来说会更快吗,-strFld:[* TO *]或者创建一个新的布尔字段对我来说会更好/更快,称之为“hasStrFld”,然后搜索?因此,当 strFld 不存在时,hasStrFld 为假。同样,当 StrFld 中有数据时,hasStrFld 为真。

其他注意事项:将来索引可能被划分为第三个分区的可能性非常低,这使得布尔不合适和否定查询不合适,并考虑使用枚举值的字段。但是,这种可能性非常低,今天的快速性能比明天的可扩展性要重要得多。

4

1 回答 1

3

我认为在实践中我可能会考虑在决定之前运行一些测试,但是,如果没有它们,我很可能会求助于 STRING 字段。

  • 它已经在那里了
  • 没有特殊的布尔字段之类的东西(据我所知,Solr使用字符串标记添加它)。

为了速度,我会尝试:

  • 将其用作过滤器(即 fq)以利用相关的缓存机制
  • 提升/取消提升字段分数和排序(而不是完全分区)
  • 多核方法,核心分区(实际上这可能易于扩展且易于维护)

希望这可以帮助。

于 2010-01-29T20:33:23.893 回答