如何与"char_filter"一起执行"小写过滤器"?

 jiaqi 发布于 2022-12-11 13:45

据我在ES文档中读到:

    "字符过滤器用于在字符串被标记化之前"整理"它."

    "在标记化之后,生成的标记流将通过任何指定的标记过滤器"

(来源:http://www.elasticsearch.org/guide/en/elasticsearch/guide/current/custom-analyzers.html)

从这两个陈述中,我了解到执行了以下步骤:

    char_filter;

    符号化;

    过滤.

问题:

我可能有一个char_filter一次转多个字母.

示例:ph - > f.

但是,"PH"不会变成"f",因为"PH"不是映射的一部分.

因此,对"philipp"的分析检索"filipp",而"Philipp"检索"philipp".

使用大写和小写(为了在两种情况下实现相同的结果),char_filter中的映射数将是(字符数)².

示例:ph - > f; Ph - > F; pH - > f; PH - > F.

如果我只有4个映射,我就不会有问题,但如果我需要更多的x²映射,char_filter往往会变得很乱.

索引示例:

{
    "settings" : {
        "index" : {
            "analysis" : {
                "analyzer" : {
                    "default_index" : {
                        "type" : "custom",
                        "tokenizer" : "whitespace",
                        "filter" : [
                            "lowercase"
                        ],
                        "char_filter" : [
                            "misc_simplifications"
                        ]
                    }
                },
                "char_filter" : {
                    "misc_simplifications" : {
                        "type" : "mapping",
                        "mappings" : [
                            "ph=>f","Ph=>F","pH=>f","PH=>F"
                        ]
                    }
                }
            }
        }
    }
}

哲学问题:

我明白我可能想要同等对待"ph"和"Ph",但"pH"可能意味着完全不同的东西.但有没有办法在char_filter阶段之前将字符转换为小写?是否有意义?

因为这个大的映射让我觉得我做错了什么,或者我能找到一个更简单(更优雅)的解决方案.

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有