具有多值字段和特定顺序键和不同权重的solr boost

时间:2018-07-10 16:37:33

标签: solr

例如,我的每个文档都有固定长度的多值字段

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用于下一个生产

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。