Elasticsearch 分析器删除引用的句子

Elasticsearch analyzer to remove quoted sentences

我正在尝试创建一个分析器来删除(或替换为 white/empty space)文档中的引用句子。

如:this is my \"test document\"

例如,我希望术语向量为:[this, is, my]

您可以使用 Pattern Replace Character Filter 为该字段配置您自己的分析器,将转义双引号之间的所有内容替换为空。

Daniel 答案正确,但由于缺少相应的正则表达式和替换,我提供它,其中包括对您的文本的测试。

索引设置如下,使用模式替换字符。

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

之后使用 analyze API 它生成以下标记:

POST_分析

{
    "text": "this is my \"test document\"",
    "analyzer" : "my_analyzer"
}

以上API的输出:

{
    "tokens": [
        {
            "token": "this",
            "start_offset": 0,
            "end_offset": 4,
            "type": "<ALPHANUM>",
            "position": 0
        },
        {
            "token": "is",
            "start_offset": 5,
            "end_offset": 7,
            "type": "<ALPHANUM>",
            "position": 1
        },
        {
            "token": "my",
            "start_offset": 8,
            "end_offset": 10,
            "type": "<ALPHANUM>",
            "position": 2
        }
    ]
}