0

我想将多种语言的页面索引到一个索引中。但是对于每种语言,我都需要定义自定义语言分析器。因此,对于英文页面,它将使用英语分析器,对于捷克页面,它将使用捷克分析器。

在搜索时,我会根据当前语言环境设置正确的分析器,因为我不需要跨语言搜索。

似乎在 Elasticsearch 的早期版本中是可能的,但我在 7.6 中找不到方法

有没有办法实现这一点,还是我真的需要为每种语言的每种类型创建一个索引?这将导致许多索引只有少量索引文档。

还是有更好的方法来处理这种情况?我们正在考虑大约 20 种语言和几种文档类型(据我了解,类型现在已被弃用,因此每种类型都需要自己的索引)。

4

1 回答 1

1

您可以使用 Elastic 7.6 中提供的字段功能,它允许您将不同的语言存储在一个索引中,查询时间也可以只使用您想要查询的语言的子字段。

事实上,有一个来自 elastic 的不错的官方博客,讨论了进行多语言搜索的不同方法,我给出的方法受到了基于每个字段的语言搜索的启发。

例子

示例索引映射如下所示

{
    "mappings": {
        "properties": {
            "title": {
                "type": "text",
                "analyzer": "english",
                "fields": {
                    "fr": {
                        "type": "text",
                        "analyzer": "french"
                    },
                    "es": {
                        "type": "text",
                        "analyzer": "spanish"
                    },
                    "estonian": {
                        "type": "text",
                        "analyzer": "estonian"
                    }
                }
            }
        }
    }
}
于 2020-04-17T11:49:15.363 回答