Solr:如何在字段类型“string”中搜索忽略大小写的记录?

时间:2018-05-05 12:10:17

标签: solr

我已将我的收藏中的以下记录编入索引

 {
        "app_name":"atm inspection",
        "appversion":1,
        "id":"app_1427_version_2449",
        "icon":"/images/media/default_icons/app.png",
        "type":"app",
        "app_id":1427,
        "account_id":556,
        "app_description":"inspection",
        "_version_":1599625614495580160}]
  }

并且它工作正常,除非直到我搜索记录区分大小写,即如果我写下Solr查询以搜索其app_name包含 atm 的记录,则Solr返回上述响应,这是正确的行为。

http://localhost:8983/solr/NewAxoSolrCollectionLocal/select?fq=app_name:*atm\ *&q=*:*

但是,如果我执行以下Solr查询来搜索app_name包含 ATM的记录

http://localhost:8983/solr/NewAxoSolrCollectionLocal/select?fq=app_name:*ATM\ *&q=*:*

Solr没有返回响应,因为ATM!= atm。

有人可以帮我解决Solr查询以不敏感地搜索记录。

非常感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

你做不到。字段类型string需要完全匹配(它是为字段值存储的单个未处理标记)。

这样做的方法是使用TextField与关联的TokenizerLowercaseFilter。如果你使用KeywordTokenizer,整个令牌将保持不变(因此它不会像你通常假设使用的一个标记器那样被拆分),并且因为它是一个TextField,它可以有一个关联的分析链 - 允许你要添加一个LowercaseFilter。

     

就我记忆而言,LowerCaseFilter是多项感知的,但请记住,通配符查询通常不会应用任何过滤器。在自己创建查询之前,你应该小写这个值(即使它可能在这个简单的情况下起作用)。