2

例如,在弹性搜索文档中,字符串存储为 \\(\\log_4(3x^2+11x)=1\\) 我想让它工作的搜索查询是 (log_4(3x^2+ 11x)=1)。

完成这项工作的最佳方法是什么?

4

1 回答 1

1

您可以使用可以替换with的pattern_replace char 过滤器,下面是工作示例。\\empty string

使用 pattern_replace char 过滤器的自定义分析器的索引设置

{
    "settings": {
        "analysis": {
            "analyzer": {
                "my_analyzer": {
                    "filter": [
                        "lowercase"
                    ],
                    "char_filter": [
                        "my_char_filter"
                    ],
                    "type": "custom",
                    "tokenizer": "whitespace"
                }
            },
            "char_filter": {
                "my_char_filter": {
                    "type": "pattern_replace",
                    "pattern": "\\\\(.*?)",
                    "replacement": ""
                }
            }
        }
    }
}

分析 API

{
    "analyzer": "my_analyzer",
    "text": "\\(\\log_4(3x^2+11x)=1\\)"
}

生成的令牌

{
    "tokens": [
        {
            "token": "(log_4(3x^2+11x)=1)",
            "start_offset": 1,
            "end_offset": 22,
            "type": "word",
            "position": 0
        }
    ]
}
于 2020-06-27T05:29:11.450 回答