Многоязычный поиск с использованием языка Elasticsearch - PullRequest
1 голос
/ 19 июня 2020

Я работаю над проектом по выполнению многоязычного полнотекстового поиска с помощью Elasticsearch. Набор исторических данных обучения, который я использую, также является многоязычным, и сейчас я пытаюсь настроить анализ текста с помощью языкового анализатора и определения языка. В первом абзаце мне нужно установить обработчик ввода логических выводов . Как мне его установить? (я не знаком с Java и новичком в elasticsearch) https://www.elastic.co/de/blog/multilingual-search-using-language-identification-in-elasticsearch

2) Elasticsearch предлагает анализатор языка для многих языков, мне нужно будет настроить анализаторы на 8 языках, если я буду следовать по этой ссылке https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-lang-analyzer.html мне нужно будет создать 8 различных пользовательских анализаторов, что довольно долго. Есть ли более короткий способ написать одну настройку для 8 языков?

1 Ответ

1 голос
/ 19 июня 2020

Во-первых, как упоминалось в блоге, an Inference Ingest Processor - это функция машинного обучения (ML), и, если у вас нет варианта использования, она вам не нужна, также она является частью X-pack, а не ядром Elasticsearch, поэтому у вас может быть чтобы включить модуль X-pack и купить, если он не включен в базовый c уровень X-pack.

Переходя к вашему второму вопросу, как упоминалось в блоге, два подхода: один имеет отдельный индекс для Таким образом, вам не нужно определять все поля c для каждого языка. Второй способ, который мы используем, - это одно поле для каждого языка, и все языки будут частью одного индекса.

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

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

{
    "mappings": {
        "properties": {
            "en": {
                "type": "text",
                "analyzer": "english"
            },
            "russian": {
                "type": "text",
                "analyzer": "russian"
            },
            "spanish": {
                "type": "text",
                "analyzer": "spanish"
            },
            "swedish": {
                "type": "text",
                "analyzer": "swedish"
            }
        }
    }
}
...