Solr 索引在分隔符上分割字段

2024-06-19

我正在尝试使用一些数据设置 Solr 索引,但是我想将我的字段之一作为管道分隔发送并在 Solr 端拆分,例如

<doc>
 <add>
  <field name="cat">a|b|c<field>
 </add>
</doc>

对于声明为的多值字段

<field name="cat" type="str_split_on_pipe" indexed="true" stored="true" multiValued="true" omitNorms="true" />

管道类型的分割是

<fieldType name="str_split_on_pipe" class="solr.TextField" positionIncrementGap="100" >
  <analyzer type="index">
      <tokenizer class="solr.PatternTokenizerFactory" pattern="\|\s*" />
      <filter class="solr.LowerCaseFilterFactory"/>
      <!--<filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="0"/>-->
      <!-- this filter can remove any duplicate tokens that appear at the same position - sometimes
     possible with WordDelimiterFilter in conjuncton with stemming. -->
      <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
  </analyzer>
  <analyzer type="query">
      <tokenizer class="solr.PatternTokenizerFactory" pattern="\|\s*" />
      <filter class="solr.LowerCaseFilterFactory"/>
      <!--<filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="0"/>-->
      <!-- this filter can remove any duplicate tokens that appear at the same position - sometimes
     possible with WordDelimiterFilter in conjuncton with stemming. -->
      <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
  </analyzer>
</fieldType>

我希望这与我使用三个不同的文件发送文档相同cat字段,但是它似乎没有做太多事情,只是不断返回我的管道分隔列表。

我正在尝试做的事情可能吗?如果可能的话,我哪里出了问题?

谢谢, 阿马尔


Using a PatternTokenizer只会改变内部表示,不会改变存储的值。如果您希望 Solr 将其视为具有多个可显示值的多值字段,那么您需要发送 3 个不同的值cat fields.

如果您正在使用DataImportHandler,那么您可以使用RegexTransformer来分割数据。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Solr 索引在分隔符上分割字段 的相关文章

随机推荐