2017-01-05 55 views
0

我有solr数组字段,可能包含字符串与一些单独的单词作为一个值,例如[“超级球”,“BlaBla”,“信息”]。 我需要将所有这3个值看作一个方面值,并且还有不区分大小写的字段搜索。Solr方面和Tokenizer

如果我使用下一个字段类型设置,我会在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个小值,becourse StandardTokenizerFactory拆分“超级球” 2个字。

如何管理这种情况?

回答

2

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

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