如何从Solr中忽略Facette中的令牌

时间:2018-12-14 08:27:58

标签: solr

我正在Solr 6.41中使用

  

WordDelimiterFilterFactory

为了搜索包含点的字符串而不在查询中出现蜂鸣声。

  

“ 00120123”(返回结果也为001.20.123)

问题在于,该字段还提供了一个faceette,现在可以显示令牌,而不是整个字段。

令牌是在字段类型text_wd中生成的:

<fieldType name="text_wd" class="solr.TextField" positionIncrementGap="100">
  <analyzer type="index">
        <tokenizer class="solr.WhitespaceTokenizerFactory"/>
        <filter class="solr.WordDelimiterFilterFactory" preserveOriginal="1" catenateAll="1" />
        <filter class="solr.LowerCaseFilterFactory"/>
      </analyzer>
      <analyzer type="query">
        <tokenizer class="solr.WhitespaceTokenizerFactory"/>
        <filter class="solr.LowerCaseFilterFactory"/>
      </analyzer>
</fieldType>

<field name="refnumber" type="text_wd" indexed="true" stored="true" required="false" />

包含令牌的单据:

001 (1324)
20 (909)
123 (480)

所需的刻面:

001.20.123

我如何保持所需的功能,同时又使令牌中没有令牌?

1 个答案:

答案 0 :(得分:1)

为各个方面使用一个单独的字段。 Facets使用基础令牌结构生成值,并且必须将字段保留为单个值才能获得所需的方面。

使用具有StrField类型的类型的单独字段,然后使用copyField指令将内容从refnumber移动到该字段中。

<field name="refnumber" type="text_wd" indexed="true" stored="true" required="false" />
<field name="refnumber_facet" type="string" indexed="true" stored="false" required="false" />
<copyField source="refnumber" dest="refnumber_facet"  />