【问题标题】:Solr - Get a string field without case sensitiveSolr - 获取不区分大小写的字符串字段
【发布时间】:2021-02-12 13:56:15
【问题描述】:

我将 solr 引擎用于电子商务网站我已将搜索标签作为字符串存储在单个字段中,如下所示,我需要将该字段转换为不区分大小写。我尝试应用小写过滤器工厂和它不适用于该领域

<field name="tags" type="string" multiValued="true" indexed="true" stored="true"/>
<fieldType name="string" class="solr.StrField" sortMissingLast="true" docValues="true"/>
  <analyzer>
      <tokenizer class="solr.StandardTokenizerFactory"/>
      <filter class="solr.LowerCaseFilterFactory"/>
  </analyzer>

现场样本

"tags":["Property",
          "House",
          "Land",
          "Home",
          "House For Sale",
          "Property For Sale",
          "Land For Sale",
          "Prime property for sale",
          "Prime property for sale in Colombo 03"],

【问题讨论】:

    标签: search solr solr-search


    【解决方案1】:

    您已将字段定义为StrField。字符串字段不能附加分析链。您必须将其更改为TextField

    <fieldType name="string" class="solr.TextField" sortMissingLast="true" docValues="true"/>
      <analyzer>
        <tokenizer class="solr.StandardTokenizerFactory"/>
        <filter class="solr.LowerCaseFilterFactory"/>
      </analyzer>
    </fieldType>
    

    但是,我建议为该字段使用与 string 不同的名称,因为 string 字段类型预计会以特定方式工作(例如用于 id 字段时等) .相反,请使用描述其功能的内容,例如 string_caseinsensitive

    【讨论】:

    • HI @MatsLindh 我需要从标签字段中获得完全匹配,这就是我使用字符串字段的原因
    • 那么您需要完全匹配还是需要不区分大小写匹配?他们不一样。您不能将分析链附加到 string 字段,但带有关键字标记器和小写过滤器的文本字段实际上是不区分大小写的字符串字段。您可能还想使用copyField 指令,以便您可以使用一个用于生成方面(保持大小写)和一个用于过滤(不区分大小写),这取决于您的确切用例。
    猜你喜欢
    • 1970-01-01
    • 2017-02-09
    • 2022-11-22
    • 2020-05-15
    • 2016-01-26
    • 1970-01-01
    • 1970-01-01
    • 2014-09-07
    • 2010-09-05
    相关资源
    最近更新 更多