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



我已经在我的集合中为以下记录编制了索引

{
"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查询,以无意识地搜索记录大小写吗。

非常感谢你的帮助。

你不能。字段类型string需要完全匹配(这是为字段值存储的单个未处理的令牌)。

这样做的方法是使用具有相关联的TokenizerLowercaseFilterTextField。如果您使用KeywordTokenizer,则整个令牌将保持完整(因此,它不会像您通常使用令牌化器所假设的那样被拆分),并且由于它是一个TextField,因此可以关联一个分析链-允许您添加LowercaseFilter。

据我记忆所及,LowerCaseFilter支持多项,但请记住,通配符查询通常不会应用任何过滤器。因此,您应该在自己创建查询之前将值小写(即使在这种简单的情况下它可能会起作用)。

最新更新