分隔符上的Solr索引分裂字段

ama*_*tar 5 xml solr

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

<doc>
 <add>
  <field name="cat">a|b|c<field>
 </add>
</doc>
Run Code Online (Sandbox Code Playgroud)

对于声明为的多值字段

<field name="cat" type="str_split_on_pipe" indexed="true" stored="true" multiValued="true" omitNorms="true" />
Run Code Online (Sandbox Code Playgroud)

管道类型的拆分是

<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>
Run Code Online (Sandbox Code Playgroud)

我希望这与我发送带有三个不同cat字段的文档是一样的,但它似乎没有做太多,只是不断返回我的管道分隔列表.

我正在尝试做什么,如果是的话我哪里出错了?

谢谢,阿玛尔

nik*_*500 9

使用a PatternTokenizer将仅更改内部表示而不更改存储的值.如果您希望Solr将其视为具有多个可显示值的多值字段,则需要发送3个不同的cat字段.

如果您正在使用DataImportHandler,则可以使用它RegexTransformer来分割数据.