Solr copyField mixed with RegexTransformer



场景:

在数据库中,我有一个名为Categories的字段,该字段类型为字符串,包含多个管道分隔的数字,如1|8|90|130|

我想要什么:

在Solr索引中,我希望有2个字段:

  • 字段类别_管道,它将包含与数据库中相同的字符串,即1|8|90|130|
  • 字段类别,它将是INT类型的多值字段,包含值1、8、90和130

对于后者,在实体规范中,我可以使用regexTransformer,然后在data-config.xml中指定以下字段:<field column="Categories" name="Navigation" splitBy="|"/>,然后在schema.xml 中将字段指定为多值

我不知道的是,如何"复制"同一个字段两次,只对其中一个执行regex拆分。我知道可以在schema.xml中定义copyField功能,但我找不到转换复制字段的方法,因为据我所知(我可能错了),transformer仅在实体规范中可用。

作为一种变通方法,我也可以从实体查询中发送两次相同的字段,但实际上,字段Categories是一个计算字段(选择嵌套),这有点昂贵,所以我想避免它

感谢您的帮助。

而不是在data-config.xml进行拆分。你可以在schema.xml中做到这一点。,这是你可以做的

  1. 使用标记化器PatternTokenizerFactory创建fieldType,该标记化器使用正则表达式基于|进行拆分
  2. FieldSplit:使用此new fieldType创建一个multivalued字段,最终将具有1,8,90130
  3. FieldOriginal:创建字符串字段(如果不需要对此进行分析),它将保留原始值1|8|90|130|
  4. 现在,您可以根据需要使用copyField复制FieldSplit、FieldOriginal值

检查这个问题,它是相似的。

您可以从相同的数据创建两列并分别处理它们。

选择类别,类别作为类别_管道FROM类别_表格

然后,您可以拆分"类别"列,但按原样对另一列进行索引。

相关内容

  • 没有找到相关文章

最新更新