我在 Rails 模型上有以下轮胎映射:
mapping do
indexes :name, analyzer: 'arabic', boost: 10
indexes :city_name, analyzer: 'arabic', boost: 5
indexes :description, analyzer: 'arabic'
end
能够涵盖多种语言的最佳方式是什么(如果我想添加英语或其他内容)?
我在 Rails 模型上有以下轮胎映射:
mapping do
indexes :name, analyzer: 'arabic', boost: 10
indexes :city_name, analyzer: 'arabic', boost: 5
indexes :description, analyzer: 'arabic'
end
能够涵盖多种语言的最佳方式是什么(如果我想添加英语或其他内容)?
重要的是您需要使用每种语言的特定字段来索引数据。
您希望根据语言进行文本分析的每个字段(词干、停用词、同义词等)都需要特定的映射,具体取决于语言本身。假设您有一个标题和一个内容字段,每种语言都需要几个这样的字段。
然后,您可以决定在同一索引、同一类型上为所有文档编制索引,并添加一个包含该语言的字段。否则,您可以将每种语言索引为不同的类型,这与第一个选项相同,但您无需在查询时手动指定语言过滤器。只要您将语言指定为 URL 中的类型,过滤器就会“自动”应用,如下所示:
curl -X GET http://localhost:9200/index/en/_search -d '{
"query" : {"match_all" : ""}
}
否则,您还可以为每种语言使用不同的索引。这实际上取决于您的数据、索引的大小(每种语言有多少文档?)以及您将如何进行查询(总是按语言,或者您可以混合不同的语言吗?)。
此外,Shay 最近在 Berlin Buzzwords 上发表的数据设计模式演讲可能会让您感兴趣。