Solr Facet和Tokenizer

时间:2017-01-05 11:25:04

标签: solr

我有一个solr数组字段,可以包含一些单独的单词作为一个值的字符串,例如[" Super Ball"," BlaBla"," Info&#34 ]。 我需要将所有这三个值视为一个方面值,并且按字段进行不区分大小写的搜索。

如果我使用下一个字段类型设置,我会在facet中看到3个值,但不区分大小写的搜索不起作用。

<fieldType name="myLower" class="solr.TextField" positionIncrementGap="100">
     <analyzer type="index"> 
        <tokenizer class="solr.KeywordTokenizerFactory"/>    
        <filter class="solr.LowerCaseFilterFactory"/>
      </analyzer>
      <analyzer type="query">     
        <tokenizer class="solr.KeywordTokenizerFactory"/>       
        <filter class="solr.LowerCaseFilterFactory"/>
      </analyzer>
   </fieldType>

如果我使用<tokenizer class="solr.StandardTokenizerFactory"/>我可以使用小写搜索,但我看到4个方面的值,因为StandardTokenizerFactory分裂&#34;超级球&#34;到2个字。

如何处理这种情况?

1 个答案:

答案 0 :(得分:2)

使用两个单独的字段。一个用于分面,一个用于搜索 - 它们是不同的操作,不同的字段定义将更好地适应。

使用<copyField source="searchfield" dest="facetfield" maxChars="30000" />将您要发送到搜索字段的内容复制到专用分面字段。使用facetfield(使用keywordtokenizer + lowercasing或只是一个字符串字段,如果你想保持案例完整)进行分面,并对搜索字段执行搜索。当用户选择了一个方面进行进一步过滤时,当您应用fq过滤器时,也会使用facetfield。