Elasticsearch анализатор для удаления цитируемых предложений - PullRequest
1 голос
/ 01 марта 2020

Я пытаюсь создать анализатор, который удалил бы (или заменил пробелом / пустым) цитируемое предложение в документе.

Например: this is my \"test document\"

I ' например, термин вектор: [this, is, my]

Ответы [ 2 ]

2 голосов
/ 02 марта 2020

Даниэль Ответ правильный, но так как отсутствуют соответствующие регулярные выражения и замены, я предоставляю его, который включает в себя проверку вашего текста.

Настройка индекса, как показано ниже, в которой используется шаблон замены символа.

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

После этого, используя анализ API , он генерирует следующие токены:

POST _analyze

{
    "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
        }
    ]
}
1 голос
/ 02 марта 2020

Вы можете настроить свой собственный анализатор с Pattern Replace Character Filter для этого поля, которое заменяет все, что находится между двойными кавычками, с пробелами.

...