我已将我的收藏中的以下记录编入索引
{
"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查询以不敏感地搜索记录。
非常感谢您的帮助。
答案 0 :(得分:1)
你做不到。字段类型string
需要完全匹配(它是为字段值存储的单个未处理标记)。
这样做的方法是使用TextField
与关联的Tokenizer
和LowercaseFilter
。如果你使用KeywordTokenizer
,整个令牌将保持不变(因此它不会像你通常假设使用的一个标记器那样被拆分),并且因为它是一个TextField,它可以有一个关联的分析链 - 允许你要添加一个LowercaseFilter。
就我记忆而言,LowerCaseFilter是多项感知的,但请记住,通配符查询通常不会应用任何过滤器。在自己创建查询之前,你应该小写这个值(即使它可能在这个简单的情况下起作用)。