【问题标题】:Multilingual Search using language Elasticsearch使用语言 Elasticsearch 的多语言搜索
【发布时间】:2020-10-09 13:53:21
【问题描述】:

我正在开发一个使用 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 种语言编写一个设置?

【问题讨论】:

    标签: java elasticsearch nlp lucene


    【解决方案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"
                }
            }
        }
    }
    

    【讨论】:

    • 关于Inference Ingest Processor 我在想,检测语言可以帮助搜索引擎即使是未知语言也能提供良好的结果,还是我的概念有误?我在文档的同一字段中索引了所有语言,用户无需在搜索之前选择语言。在这种情况下,我可以使用您的第二种方式建议“每种语言的一个字段”? (因为我是 ES 的新手:我所说的字段是“列”,其中列出了我的所有多语言历史全文搜索的原始数据。非常感谢 :)
    • @yolo25,是的,我觉得每种语言都有一个字段更好,用户不必在搜索时选择,因为您构建了一个 ES 查询,该查询在所有语言中查找搜索词:) 和这是系统中的常态。另外,如果对您有帮助,您可以投票并接受答案,那就太好了:)
    • 在这种情况下,我可以在不使用 inference Ingest processor 的语言检测的情况下达到我的目标?使用语言分析器应该提供良好的性能?
    • @yolo25 是的,这个功能刚刚发布,仍在开发中,甚至在官方网站上提到了它的实验功能,而语言分析器已经存在了很长时间,并且有数千个系统正在使用它们并且非常可扩展并提供了良好的性能:) 我使用语言分析器处理了数十亿个文档:)
    • @yolo25 即使使用多文件elastic.co/guide/en/elasticsearch/reference/current/… 再次使用不同的字段来存储数据也是不可能的,你刚才提到的恐怕不可能:)
    猜你喜欢
    • 2014-06-10
    • 1970-01-01
    • 2013-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多