Solr在托管模式中使用不区分大小写的字段

时间:2017-11-19 02:18:50

标签: solr

我有一个字段使用字符串类型,我希望它不是tokenizer和不区分大小写。我知道使用字符串字段类型并添加LowerCaseFilterFactory过滤器,但我怎样才能在无模式模式下执行此操作?

1 个答案:

答案 0 :(得分:0)

在“无模式”模式下执行此操作没有什么不同 - 您use the Schema API可以配置您的架构,或者如果您只有一个节点,可以手动编辑托管架构。

但是您无法将过滤器附加到字符串字段,因此必须将该字段更改为以TextField为基础的字段类型,然后让它使用KeywordTokenizer作为其标记生成器并应用过滤到结果。 KeywordTokenizer将输入字符串保存为单个标记,然后由过滤器将其设置为小写 - 结果与使用附加过滤器的字符串字段的结果相同。

您可以通过invoking the add-field-type command on the schema endpoint

在Schema API中添加新的字段类型
curl -X POST -H 'Content-type:application/json' --data-binary '{
  "add-field-type" : {
     "name":"myNewTxtField",
     "class":"solr.TextField",
     "positionIncrementGap":"100",
     "analyzer":{
        "tokenizer":{
           "class":"solr.KeywordTokenizerFactory" 
        }
        "filters":[{
           "class":"solr.LowercaseFilterFactory"
        }]
     }
  }
}' http://localhost:8983/solr/gettingstarted/schema