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

jmp7cifd  于 2022-11-07  发布在  Lucene
关注(0)|答案(1)|浏览(130)

我正在做一个项目,使用Elasticsearch执行多语言全文搜索。我正在使用的历史训练数据集也是多语言的,我现在正在尝试使用语言分析器和语言检测配置文本分析。
1)我使用下面的链接作为指南,因为它是写在第一段我需要安装一个推理摄取处理器.我如何安装它?(我不熟悉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种语言的一个设置?

zed5wv10

zed5wv101#

首先,正如博客中提到的,an Inference Ingest Processor是一个机器学习(ML)功能,除非你有一个用例,否则你不需要它,而且它是X-pack的一部分,而不是核心的Elasticsearch,所以如果X-pack的基本层中不包括它,你可能必须启用X-pack模块并购买。
关于你的第二个问题,正如博客中提到的两种方法,一种是为每种语言建立单独的索引,这样你就不必定义所有特定于语言的字段,第二种方法是为每种语言建立一个字段,所有语言都将成为同一索引的一部分。
维护8个自定义分析器没有任何开销,因为大多数分析器都是内置的,您可以检查Elasticsearch language analyzers,这些分析器在您的用例中都受支持。如果您必须创建其他分析器,这些分析器将是一次性的工作,并且将是您的设置和Map的一部分。
下面是每个字段方法的一个示例索引Map,其中我使用了大多数常用语言的内置分析器。

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

相关问题