在我的项目中,我通过将文档存储在逗号分隔的字段中来创建文档之间的关系,例如:relatedDocIds="2455,4564,7345"
这些关系通过使用贯穿我的计划作业不时更新DB,获取记录,并更新其Solr文档。
我知道不是使用单个以逗号分隔的字符串字段,而是使用multiValued
字符串,其中每个ID可以占用一个值槽。由于我的客户端API的一些限制,我现在只能为每个字段设置一个值。我没有看到以我的方式使用它的任何缺点,即查询,例如relatedDocIds:2455
完全按照我希望的方式解析。 multiValued
的文档说它做了同样的事情。
我是否错过了使用multiValued
的潜在优势?我的方法可以,它有什么限制?存储这些ID的更好,更优化的方法是什么?
答案 0 :(得分:0)
主要区别在于multiValued字段假装一个值的结束标记和另一个值的开始标记彼此相距很远。这就是 positionIncrementGap 的含义(通常为100)。
如果你想做一个像“2455,4564”这样的短语搜索,这很重要。在你的情况下,我相信,它会匹配,但如果你把它们作为multiValued字段,每个值分开,它就不会。
当然,multiValued字段(如果存储)将作为值数组返回。字符串 - 如果存储 - 在给定时返回,即使索引版本已全部分解为标记。