【问题标题】:Solr Facet and TokenizerSolr Facet 和分词器
【发布时间】:2017-01-05 11:25:03
【问题描述】:

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

如果我使用下一个字段类型设置,我会在 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>

如果我使用 &lt;tokenizer class="solr.StandardTokenizerFactory"/&gt; 我可以使用小写搜索,但我看到 4 个方面值,因为 StandardTokenizerFactory 将“超级球”拆分为 2 个单词。

如何处理这种情况?

【问题讨论】:

    标签: solr


    【解决方案1】:

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

    使用&lt;copyField source="searchfield" dest="facetfield" maxChars="30000" /&gt; 将您发送到搜索字段的内容复制到专用的分面字段。使用 facetfield(如果要保持大小写不变,则使用关键字标记器 + 小写或仅使用字符串字段)进行构面,并针对搜索字段执行搜索。当您应用fq 过滤器且用户选择了一个构面进行进一步过滤时,该构面字段也将被使用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-18
      • 1970-01-01
      • 2019-06-18
      相关资源
      最近更新 更多