使用语言Elasticsearch进行多语言搜索

时间:2020-06-19 10:16:59

标签: java elasticsearch nlp lucene

我正在研究一个使用Elasticsearch执行多语言全文本搜索的项目。我正在使用的历史训练数据集也是多语言的,我现在正尝试使用语言分析器和语言检测来配置文本分析。

1)我使用以下链接作为指南,按照第一段所述,我需要安装推理提取处理器。我该如何安装? (我不熟悉Java和Elasticsearch的新功能) https://www.elastic.co/de/blog/multilingual-search-using-language-identification-in-elasticsearch

2)Elasticsearch提供了多种语言的语言分析器,如果我点击此链接https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-lang-analyzer.html,我将需要配置8种语言的分析器,我将不得不创建8种不同的自定义分析器,这很长。有没有一种更短的方法可以为8种语言编写一个设置?

1 个答案:

答案 0 :(得分:1)

首先在博客an Inference Ingest Processor中提到的是机器学习(ML)功能,除非有用例,否则不需要它,它也是X-pack的一部分,而不是核心Elasticsearch,因此您如果X-pack的基本层未包含该模块,则可能必须启用X-pack模块并购买。

谈到第二个问题,正如博客中提到的,两种方法之一是为每种语言都有一个单独的索引,这样您就不必定义所有特定于语言的字段,而第二种方法是每种语言的字段,所有语言都将成为同一索引的一部分。

由于大多数分析器是内置的,因此无需维护8个定制分析器,您可以检查Elasticsearch language analyzers在用例中全部受支持。而其他人,如果必须创建它,则只需一次努力,并且将是设置和映射的一部分。

下面是每个字段方法的索引映射示例,其中我使用的是大多数常用语言的内置分析器。

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