0

我在 Rails 模型上有以下轮胎映射:

   mapping do

     indexes :name, analyzer: 'arabic', boost: 10

     indexes :city_name, analyzer: 'arabic', boost: 5

     indexes :description, analyzer: 'arabic' 

   end

能够涵盖多种语言的最佳方式是什么(如果我想添加英语或其他内容)?

4

1 回答 1

1

重要的是您需要使用每种语言的特定字段来索引数据。
您希望根据语言进行文本分析的每个字段(词干、停用词、同义词等)都需要特定的映射,具体取决于语言本身。假设您有一个标题和一个内容字段,每种语言都需要几个这样的字段。
然后,您可以决定在同一索引、同一类型上为所有文档编制索引,并添加一个包含该语言的字段。否则,您可以将每种语言索引为不同的类型,这与第一个选项相同,但您无需在查询时手动指定语言过滤器。只要您将语言指定为 URL 中的类型,过滤器就会“自动”应用,如下所示:

curl -X GET http://localhost:9200/index/en/_search -d '{
  "query" : {"match_all" : ""}
}

否则,您还可以为每种语言使用不同的索引。这实际上取决于您的数据、索引的大小(每种语言有多少文档?)以及您将如何进行查询(总是按语言,或者您可以混合不同的语言吗?)。

此外,Shay 最近在 Berlin Buzzwords 上发表的数据设计模式演讲可能会让您感兴趣。

于 2012-10-03T20:43:22.317 回答