例如,我的每个文档都有固定长度的多值字段
popularity: [100, 0, 0, 0, 10, 0, 0, 0, 10, 80]
我的计划使用了按地区划分的多个流行度,popularity[0]
是全球性的,而popularity[1...9]
固定为region_id
,我存储在另一个数据库中。
为什么要多值,因为如果增加区域,则字段长度可能会增加。 (也许每年1年/ 3年)
如果我使用单个值,则可以提升boost=log(popularity,2,5)
。但是,如果它具有多重价值,我该如何提高?即受欢迎程度[0]?
我将solr 6.6用于生产计划,将solr 7.3.1用于下一个生产
答案 0 :(得分:1)
否,您不能在这样的多值字段中访问特定值。
但是您可以添加一个dynamicField,然后直接用其索引对值进行索引:
<dynamicField name="popularity_*" type="int" indexed="true" stored="true"/>
然后,使用字段名称的特定索引创建文档:
{
popularity_0: 100,
popularity_1: 0,
popularity_2: 0,
popularity_3: 0,
popularity_4: 10,
popularity_5: 0,
popularity_6: 0,
popularity_7: 0,
popularity_8: 10,
popularity_9: 80
}
然后通过提供字段名称来应用增强功能:
boost=log(popularity_9,2,5)
..,如果未将它们直接映射到1-9,即popularity_abc: 492
,则可以直接使用region_id。